Mongodb findAndModify()可以工作,但等效的update()不能';T
现有数据: {“posts”:[{“a”:{“t”:2}]} db.users.findAndModify({query:{“posts.a”:{“$exists”:true}},update:{“$push”:{“posts.$.a.test”:{“d”:2}}}) 命令后的数据:{“posts”:[{“a”:{“t”:2, “测试”:[{“d”:2}]}} 这是正确的。但是,完全相同的命令与update()不起作用: 输出:Thu Nov 24 12:07:02语法错误:无效的属性id(shell):1Mongodb findAndModify()可以工作,但等效的update()不能';T,mongodb,Mongodb,现有数据: {“posts”:[{“a”:{“t”:2}]} db.users.findAndModify({query:{“posts.a”:{“$exists”:true}},update:{“$push”:{“posts.$.a.test”:{“d”:2}}}) 命令后的数据:{“posts”:[{“a”:{“t”:2, “测试”:[{“d”:2}]}} 这是正确的。但是,完全相同的命令与update()不起作用: 输出:Thu Nov 24 12:07:02语法错误:无效的属性id(sh
为什么不呢?这在我看来像是一个语法错误:update方法使用四个参数、两个对象和两个布尔值,而不仅仅是一个对象。所以
db.users.update({{"posts.a": {"$exists" : true} },
{"$push" : {"posts.$.a.test": {"d" : 2}}}, true, false })
应该读
db.users.update({"posts.a": {"$exists" : true} },
{"$push" : {"posts.$.a.test": {"d" : 2}}}, true, false)
这看起来像是一个语法错误:update方法使用四个参数、两个对象和两个布尔值,而不仅仅是一个对象。所以
db.users.update({{"posts.a": {"$exists" : true} },
{"$push" : {"posts.$.a.test": {"d" : 2}}}, true, false })
应该读
db.users.update({"posts.a": {"$exists" : true} },
{"$push" : {"posts.$.a.test": {"d" : 2}}}, true, false)
它的更新({find},{update},upsert,multi)不是更新({find},{update},upsert,multi)它的更新({find},{update},upsert,multi)不是更新({find},{update},upsert,multi)