【问题标题】:Mongo DB findAndModify queryMongoDB findAndModify 查询
【发布时间】:2017-02-25 12:32:25
【问题描述】:

JSON 对象:

{
    "_id" : ObjectId("123"),
    "pi" : [ 
        {
            "si" : 0,
            "ui" : {
                "_id" : ObjectId("xyz"),
                "un" : "xyz",
                "his" : 27,
            }
        }, 
        {
            "si" : 1,
            "ui" : {
                "_id" : ObjectId("zyx"),
                "un" : "zyx",
                "his" : 18,
            }
        }
    ],
}

操作:

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

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

有可能吗?

【问题讨论】:

    标签: node.js mongodb express mongodb-query findandmodify


    【解决方案1】:

    假设所有ui._id 都是独一无二的,那么这个对你有用:

    db.getCollection('playing_table').findAndModify({
        query: { 
            "pi": { $elemMatch: { "ui._id" : ObjectId("xyz") } }
        },
        sort: {},
        update: { $inc: { "pi.$.ui.his" : 1 } }
    })
    

    这将导致:

    {
        "_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,
                }
            }
        ],
    }
    

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

    【讨论】:

    • 快乐是我的。
    猜你喜欢
    • 2017-03-11
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 2014-08-30
    • 2015-11-18
    • 2020-12-07
    相关资源
    最近更新 更多