请考虑以下文档,它是运行时集合的一部分:
{
"entity_id" : 10,
"features" : [
{
"10" : "Test System 2"
},
{
"20" : "System 2 Description"
},
{
"180" : ISODate("2013-12-25T18:19:40.589Z")
},
{
"190" : ISODate("2013-12-25T18:19:40.589Z")
}
],
"_id" : ObjectId("52bb21bc8a2ebdc01c000001")
}
我的目标是更新具有键“20”的“功能”数组元素的值。这是我尝试过的东西(在 mongo shell 中):
db.Runtime.findAndModify({ "query" : {"_id": "52bb21bc8a2ebdc01c000001"}, "update" : {$set : {"features.$.20":"Updated Description"}}} );
db.Runtime.findAndModify({ "query" : {"_id": "52bb21bc8a2ebdc01c000001"}, "update" : {$set : {"features['20']":"Updated Description"}}} );
db.Runtime.findAndModify({ "query" : {"_id": "52bb21bc8a2ebdc01c000001"}, "update" : {$set : {"features[1]":"Updated Description"}}} );
在所有情况下,shell 都会打印 null 并且数据没有任何反应。所以,主要问题当然是我的代码片段有什么问题。另外,应该如何解释“null”?有没有像 mongo shell's log 这样的东西可以找到任何线索?非常感谢您的帮助!