我有这个非常基本的集合(blog.posts
),我想使用author.name
修饰符从中更新键($set
)的值。这是集合中文档的示例:
{
"_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的新手,任何其他提示将不胜感激。
答案 0 :(得分:1)
根据MongoDB documentation,点(。)是字段名称中的受限字符。因此,字段名称中不能包含点号(。)。这就是它将dot(。)值转换为子文档的原因。