0

我有这样的结构:

{
    "_id" : ObjectId("501abaa341021dc3a1d0c70c"),
    "name" : "prova",
    "idDj" : "1",
    "list" : [
        {
            "id" : 1,
            "votes" : 2
        },
        {
            "id" : 2,
            "votes" : 4
        }
    ]
}

我正在尝试通过此查询增加选票:

session_collection.update(
 {'_id':session_collection.db.bson_serializer.ObjectID.createFromHexString(idSession),'list.id':idSong},
 {$inc:{'list.$.votes':1}},
 {safe: true} ,
 callback);

但它不起作用,没有问题,它只是不更新​​任何东西。

我认为这是因为 'list.id' 和 'list.$.votes' 上的 ['] (简单引号),因为终端内的相同查询可以完美运行。

谢谢!

4

1 回答 1

0

我怀疑您的匹配没有按您的预期工作。回调将返回

函数(错误,更新的项目数,整体更新对象)

如果匹配成功,numberofItemsUpdated 应该等于 1。您需要检查 idSession 和 idSong 是否是您认为的那样。

于 2012-08-03T17:30:09.263 回答