首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongo DB findAndModify查询

Mongo DB findAndModify查询
EN

Stack Overflow用户
提问于 2017-02-25 12:32:25
回答 1查看 124关注 0票数 0

JSON对象:

代码语言:javascript
复制
{
    "_id" : ObjectId("123"),
    "pi" : [ 
        {
            "si" : 0,
            "ui" : {
                "_id" : ObjectId("xyz"),
                "un" : "xyz",
                "his" : 27,
            }
        }, 
        {
            "si" : 1,
            "ui" : {
                "_id" : ObjectId("zyx"),
                "un" : "zyx",
                "his" : 18,
            }
        }
    ],
}

操作:

代码语言:javascript
复制
db.getCollection('playing_table').findAndModify(
    {"_id" : ObjectId("123") ,"pi.ui._id":ObjectId("xyz")},
    {},
    {$inc : {'pi.$.ui.his' : 1}},
    {new : true}, 
    function (err, updata) {});

我想使用findAndModify()查询来增加他的计数器。

有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-25 12:54:18

假设所有的ui._id都是独一无二的,那么这个就适合你了:

代码语言:javascript
复制
db.getCollection('playing_table').findAndModify({
    query: { 
        "pi": { $elemMatch: { "ui._id" : ObjectId("xyz") } }
    },
    sort: {},
    update: { $inc: { "pi.$.ui.his" : 1 } }
})

它将导致:

代码语言:javascript
复制
{
    "_id" : ObjectId("123"),
    "pi" : [ 
        {
            "si" : 0,
            "ui" : {
                "_id" : ObjectId("xyz"),
                "un" : "xyz",
                "his" : 28, // incremented
            }
        }, 
        {
            "si" : 1,
            "ui" : {
                "_id" : ObjectId("zyx"),
                "un" : "zyx",
                "his" : 18,
            }
        }
    ],
}

调整您的ObjectId,例如:ObjectId("5883ee408d4f6e2b748bf57b")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42456097

复制
相关文章

相似问题

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