Mongo DB findAndModify 查询
Mongo DB findAndModify query
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()
查询增加 his 计数器。
可能吗?
假设所有 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,
}
}
],
}
请调整您的 ObjectId
,例如:ObjectId("5883ee408d4f6e2b748bf57b")
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()
查询增加 his 计数器。
可能吗?
假设所有 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,
}
}
],
}
请调整您的 ObjectId
,例如:ObjectId("5883ee408d4f6e2b748bf57b")