我在我的site.When上使用mongodb,我试着运行"findAndModify“函数,我总是得到文档是‘未定义’的:
function counter(name) {
var doc = this.db.collection('counter').findAndModify(
{ query: { _id: name },
update: { $inc: { next: 1} },
new: true,
upsert: true });
return doc.next;
}问:我错过了什么?
发布于 2013-10-26 01:01:38
我只是遇到了这个问题,试图实现来自MongoDB文档的相同的计数器示例代码。
如果使用的是蒙古人驱动程序,则需要使用回调,因为该函数不返回任何内容:
this.db.collection('counter').findAndModify({
query: { _id: name },
update: { $inc: { next: 1} },
new: true,
upsert: true
},
function(err, doc){
console.log('the id is: '+doc.next);
});发布于 2012-03-11 13:35:28
您没有遗漏任何东西,如果插入值等于true findAndModify,则应该始终返回文档。即使没有匹配的查询。
但是,分片和findAndModify也有局限性--您的查询应该始终包含切分键,mb --这是一个问题。
这个命令也适用于版本为>= 1.3的mongodb。如果您使用旧的mongodb,只需将其更新为最新版本(2.0.3),它就会正常工作。(我在1.8和2.0版上进行了测试)
发布于 2015-09-24 18:26:14
在打破我的头相当长一段时间后,我把排序改为1,它起了作用.
counters.findAndModify({ _id: { $eq: "virtualcurrency" } }, { '_id': 1 }, { $inc: { seq: 1 } }, { new: true }, function (err, result) {https://stackoverflow.com/questions/9654203
复制相似问题