我想一起更新,允许多次对同一文档进行操作
例如,$ inc' csize'如果文档的_id出现X次,则列X次但是mongodb只能工作一次,怎么办呢?
或没有$ in的其他解决方案?
> db.user_info.findOne({_id:ObjectId("54bcc154ed9c800af1d11b47")})
{
"_id" : ObjectId("54bcc154ed9c800af1d11b47"),
"atime" : ISODate("2015-04-03T07:10:24.118Z"),
"csize" : 25
}
> db.user_info.update({_id:{$in:[
ObjectId("54bcc154ed9c800af1d11b45"),
ObjectId("54bcc154ed9c800af1d11b45"),
ObjectId("54bcc154ed9c800af1d11b46"),
ObjectId("54bcc154ed9c800af1d11b47"),
ObjectId("54bcc154ed9c800af1d11b47"),
ObjectId("54bcc154ed9c800af1d11b47")
]}},
{$inc: {csize:1}},
true,
true
)
> db.user_info.findOne({_id:ObjectId("54bcc154ed9c800af1d11b47")})
{
"_id" : ObjectId("54bcc154ed9c800af1d11b47"),
"atime" : ISODate("2015-04-03T07:10:24.118Z"),
"csize" : 26
}
你看,54ccc154ed9c800af1d11b47的csize只有一次,而不是3次
答案 0 :(得分:1)
无需在查询中执行 $in
操作三次,只需按所需的特定值增加字段(在您的情况下为3),因为{ {3}}运算符接受正值和负值。
db.user_info.update(
{
"_id" : ObjectId("54bcc154ed9c800af1d11b47")
},
{
"$inc": { "csize": 3 }
}
)