如何更新父键有space的子文档?
How to update sub document whose parent key has space in?
我有如下文件:
{
"_id" : ObjectId("54b60ee28115386561cda04b"),
"a b" : "{c:d}",
}
我需要将 'a b'.c 更新为值 'e'。试过下面的查询
db.test.update({"_id" : ObjectId("54b60ee28115386561cda04b")}, {$set:{'a b.c':'e'}});
但出现错误:
LEFT_SUBFIELD only supports Object: a b not: 2
有什么建议吗?
在键名中使用 space 没有任何问题(除了它看起来很糟糕而且不是一个好的做法)。因此,您可以毫无问题地修改格式正确的文档。
{
"_id" : ObjectId("54b60ee28115386561cda04b"),
"a b" : { "c": "d" }
}
并更新:
db.test.update(
{ "_id": ObjectId("54b60ee28115386561cda04b") },
{ "$set": { "a b.c": "e" } }
);
但是你这里的问题是"a b"的内容是一个字符串。所以没有"c"分属性可以访问
{
"_id" : ObjectId("54b60ee28115386561cda04b"),
"a b" : "{c:d}",
}
更正文档以包含嵌套对象:
db.test.update(
{ "_id": ObjectId("54b60ee28115386561cda04b") },
{ "$set": { "a b": { "c": "e" } } }
);
以后的更新将正常运行
我有如下文件:
{
"_id" : ObjectId("54b60ee28115386561cda04b"),
"a b" : "{c:d}",
}
我需要将 'a b'.c 更新为值 'e'。试过下面的查询
db.test.update({"_id" : ObjectId("54b60ee28115386561cda04b")}, {$set:{'a b.c':'e'}});
但出现错误:
LEFT_SUBFIELD only supports Object: a b not: 2
有什么建议吗?
在键名中使用 space 没有任何问题(除了它看起来很糟糕而且不是一个好的做法)。因此,您可以毫无问题地修改格式正确的文档。
{
"_id" : ObjectId("54b60ee28115386561cda04b"),
"a b" : { "c": "d" }
}
并更新:
db.test.update(
{ "_id": ObjectId("54b60ee28115386561cda04b") },
{ "$set": { "a b.c": "e" } }
);
但是你这里的问题是"a b"的内容是一个字符串。所以没有"c"分属性可以访问
{
"_id" : ObjectId("54b60ee28115386561cda04b"),
"a b" : "{c:d}",
}
更正文档以包含嵌套对象:
db.test.update(
{ "_id": ObjectId("54b60ee28115386561cda04b") },
{ "$set": { "a b": { "c": "e" } } }
);
以后的更新将正常运行