Node.js Mongo DB findAndModify查询

Node.js Mongo DB findAndModify查询,node.js,mongodb,express,mongodb-query,findandmodify,Node.js,Mongodb,Express,Mongodb Query,Findandmodify,JSON对象: { "_id" : ObjectId("123"), "pi" : [ { "si" : 0, "ui" : { "_id" : ObjectId("xyz"), "un" : "xyz", "his" : 27, } }, {

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) {});
操作:

{
    "_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()
query增加他的计数器


有可能吗?

假设所有的
ui.\u 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,
            }
        }
    ],
}

请调整您的
ObjectId
s,例如:
ObjectId(“5883ee408d4f6e2b748bf57b”)

我很高兴。