以下代码有什么问题?
db.get().collection('bars').findAndModify({
barID: req.body.button
},{
$push: {
usersfbID: req.body.profileUser[0].facebookID,
usersDocID: req.body.profileUser[0]._id
}
},{
new: true
}, function(err, doc){
if(err){
throw err;
}if(doc){
console.log('Existing document updated successfully');
console.log(doc);
}
});
我总是得到同样的错误,
MongoError:exception:nextSafe():{$ err:"可以规范化查询: BadValue错误排序规范",代码:17287}
我做错了什么?我是否滥用$ push运算符?我是否需要在某些键值对周围提供引号?这种findAndModify方法让我发疯。我完全不知道我做错了什么。
注意:关于findAndModify,我已经完成了关于SO的其他问题,但这些解决方案都不适用于我。我确定它是关于函数语法的一个小错误。
答案 0 :(得分:2)
findAndModify
方法具有以下签名
findAndModify(query, sort, doc, options, callback)
其中
query
<object>
:用于查找要修改的对象的查询对象。sort
<array>
:如果多个文档匹配,请选择指定排序顺序中的第一个作为要操作的对象。doc
<object>
:要更新的字段/值。options
<object>
可选:可选设置。您收到错误的原因是因为缺少 sort
规范,而是正在读取 doc
更新< strong> sort
参数。
您需要按如下方式指定sort参数:
db.get().collection('bars').findAndModify(
{ "barID": req.body.button }, // query
[ ["barID", 1] ], // sort
{
"$push": { // doc
"usersfbID": req.body.profileUser[0].facebookID,
"usersDocID": req.body.profileUser[0]._id
}
},
{ "new": true }, // options
function(err, doc){ // callback
if (err){
throw err;
} else if(doc){
console.log('Existing document updated successfully');
console.log(doc);
}
}
);