0

我很难弄清楚这个问题。

我正在尝试发布一个集合级别更新,该更新基本上用一个数字更新所有匹配的记录,例如:

# I actually am using PHP driver but using the console has the same result
db.my_collection.update( {si: '647522529'}, {$set: {cl:'2'}} );

上面应该找到所有 si='647522529' 的记录,然后更新 cl='2'。

问题是上面的命令没有给出任何类型的错误或警告,所以看起来它执行正确,但是当我在“cl”键上运行一个不同的命令时,它给出了混合的结果(2/1):

> db.runCommand( { distinct: 'my_collection', key: 'cl', query: { si: '647522529' } } )
{
        "values" : [
                "2",
                "1"
        ],
        "stats" : {
                "n" : 113,
                "nscanned" : 113,
                "nscannedObjects" : 113,
                "timems" : 1,
                "cursor" : "BtreeCursor si_1"
        },
        "ok" : 1
}

我做错了什么吗?我试过重新索引数据库,但也没有任何效果。

任何帮助将非常感激!

4

2 回答 2

1

默认情况下,mongo 更新将更新单个文档。请参阅: http ://docs.mongodb.org/manual/tutorial/modify-documents/

您必须提供可选的:

{ multi: true }
于 2013-10-08T19:43:13.677 回答
0

db.my_collection.update(标准,更新,多:真)

这应该工作!

参考:http ://docs.mongodb.org/manual/tutorial/modify-documents/

于 2013-10-09T00:57:10.857 回答