我有以下文件
{
"_id" : ObjectId("5013df3e4a4314271d002476"),
"bgtiled" : NumberLong(1),
"post_count" : NumberLong(0),
"url" : "fb_test",
"url_lower" : "fb_test",
"user_id" : NumberLong(4044217),
"verified" : NumberLong(0)
}
我想增加post_count
。根据{{3}}我这样做
db.users.update({user_id : 4044217}, {$inc : {post_count : 1}});
并且它不会增加字段。我也试过这个
db.users.update({user_id : 4044217}, {$inc : {"post_count" : 1}});
和这个
db.users.update({user_id : 4044217}, {"$inc" : {"post_count" : 1}});
没有结果:(
答案 0 :(得分:1)
如果您在shell中执行此操作,找到正在发生的事情的一种方法是检查此更新中返回的getLastError()
调用。
由于shell会在每个条目上自动为您调用getLastError(),您可以采用以下两种方法之一:
> db.users.update({user_id : 4044217}, {$inc : {post_count : 1}})
> db.getPrevError()
{ "err" : null, "updatedExisting" : true, "n" : 1, "nPrev" : 8, "ok" : 1 }
或者你可以在shell通过
为你调用GLE之前解决错误> db.users.update({user_id : 4044217}, {$inc : {post_count : 1}}); db.getLastErrorObj();
{
"updatedExisting" : false,
"n" : 0,
"connectionId" : 2,
"err" : null,
"ok" : 1
}
注意:在第二个示例中,GLE调用必须与更新位于同一行。
在您的情况下,您似乎已经获得了一个现有文档已更新的信息,这可能促使您通过
检查更新语句的find子句> db.users.find( {user_id : 4044217} )
会返回多个文档。
答案 1 :(得分:0)
原来我有多个与查询匹配的文档,只有一个已更新。
对不起。