0
我想不出一個簡單的用例findAndModify的.....MongoDB的findAndModify更新所需的錯誤
db.collection('products').findAndModify(
{
query: { _id: new o_id(cart[i]._id) },
update: { $inc: { sold: qty, onstock: (-1*qty) } },
new: true
},function(e,d) {
if (e) return console.log('findAndModify error',e);
});
但上面的一貫返回以下錯誤..
{
[ MongoError: need remove or update ]
name: 'MongoError',
message: 'need remove or update',
ok: 0,
errmsg: 'need remove or update'
}
上午我錯過了什麼?
也試過在回答表明從zangw
db.collection('products').findAndModify(
{ _id: new o_id(cart[i]._id) },
{ $inc: { sold: qty, onstock: (-1*qty) } },
{ new: true },function(e,d) {
if (e) { return console.log('updateStock findAndModify error',e); }
console.log('updated',d);
});
現在得到另一個錯誤
findAndModify error
{ [MongoError: exception: nextSafe():
{ $err: "Can't canonicalize query: BadValue bad sort specification",
code: 17287 }]
name: 'MongoError', message: 'exception: nextSafe():
{ $err: "Can\'t canonicalize query: BadValue bad sort specification",
code: 17287
}',
errmsg: 'exception: nextSafe():
{ $err: "Can\'t canonicalize query: BadValue bad sort specification",
code: 17287 }',
code: 13106,
ok: 0 }
正在運行的MongoDB 2.6.11
解決方案,通過@Blakes七(的建議在findAndModify上棄用)
db.collection('products').findOneAndUpdate(
{ _id: new o_id(cart[i]._id) },
{ $inc: { sold: qty, onstock: (-1*qty) } },
function(e,d) {
if (e) { return console.log('updateStock findAndModify error',e); }
findAndModify將更新的文檔作爲d.value返回。
謝謝回覆。 – user3094755
您建議失敗的格式,將用新tx更新問題。 – user3094755
@ user3094755,添加'{_id:'降序'},因爲我的回答表明 – zangw