使用$set使用包含点(.)的键更新文档的值,MongoDB
我有一个非常基本的blog.posts集合,我想从中使用$set修饰符更新关键author.name的值。以下是该集合中的文档示例:使用$set使用包含点(.)的键更新文档的值,MongoDB,mongodb,Mongodb,我有一个非常基本的blog.posts集合,我想从中使用$set修饰符更新关键author.name的值。以下是该集合中的文档示例: { "_id" : ObjectId("5ca66e7d8a3bb6e58e0d85f4"), "s_id": "unique_post", "title" : "MongoDB is cool", "author.name" : "Terence" } 我想将author.name键的值从Tere
{
"_id" : ObjectId("5ca66e7d8a3bb6e58e0d85f4"),
"s_id": "unique_post",
"title" : "MongoDB is cool",
"author.name" : "Terence"
}
我想将author.name键的值从Terence更改为Benjamin,这是我试图获得结果的查询:
db.blog.posts.update({"s_id": "unique_post"}, {"$set":{"author.name":"Benjamin"}})
问题是,当我执行此查询时,我会得到一个新的嵌套数据,如图所示:
{
"_id" : ObjectId("5ca66e7d8a3bb6e58e0d85f4"),
"title" : "MongoDB is cool",
"author.name" : "Terence",
"author" : {
"name" : "Benjamin"
}
}
我知道这是意料之中的,但我的问题是:如何修改文档中包含点的键的值?
请告诉我我是mongoDB的新手,如有任何其他提示,将不胜感激。按dot。是字段名称中的受限字符。所以你不能有点。在字段名中。这就是它转换点的原因。将值转换为子文档
谢谢这个@Mani