首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mongodb上使用“findAndModify”

在mongodb上使用“findAndModify”
EN

Stack Overflow用户
提问于 2012-03-11 10:32:56
回答 3查看 8.8K关注 0票数 1

我在我的site.When上使用mongodb,我试着运行"findAndModify‬“函数,我总是得到文档是‘未定义’的:

代码语言:javascript
复制
function counter(name) {
    var doc = this.db.collection('counter').findAndModify(
                { query: { _id: name }, 
                  update: { $inc: { next: 1} }, 
                  new: true, 
                  upsert: true });

    return doc.next;
}

问:我错过了什么?

EN

回答 3

Stack Overflow用户

发布于 2013-10-26 01:01:38

我只是遇到了这个问题,试图实现来自MongoDB文档的相同的计数器示例代码。

如果使用的是蒙古人驱动程序,则需要使用回调,因为该函数不返回任何内容:

代码语言:javascript
复制
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);
    });
票数 2
EN

Stack Overflow用户

发布于 2012-03-11 13:35:28

您没有遗漏任何东西,如果插入值等于true findAndModify,则应该始终返回文档。即使没有匹配的查询。

但是,分片和findAndModify也有局限性--您的查询应该始终包含切分键,mb --这是一个问题。

这个命令也适用于版本为>= 1.3的mongodb。如果您使用旧的mongodb,只需将其更新为最新版本(2.0.3),它就会正常工作。(我在1.8和2.0版上进行了测试)

票数 1
EN

Stack Overflow用户

发布于 2015-09-24 18:26:14

在打破我的头相当长一段时间后,我把排序改为1,它起了作用.

代码语言:javascript
复制
counters.findAndModify({ _id: { $eq: "virtualcurrency" } }, { '_id': 1 }, { $inc: { seq: 1 } }, { new: true }, function (err, result) {
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9654203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档