我有一个收集笔记本,里面嵌入了一个名为Notes的数组文件.样本

文档如下所示.

{
"_id" : ObjectId("4f7ee46e08403d063ab0b4f9"),
"name" : "MongoDB",
"notes" : [
            {
              "title" : "Hello MongoDB",
              "content" : "Hello MongoDB"
            },
            {
              "title" : "ReplicaSet MongoDB",
              "content" : "ReplicaSet MongoDB"
            }
         ]
}

我想找出唯一一个标题为"Hello MongoDB"的便条.我没有得到我应该得到的

这就是问题所在.谁能帮帮我吗.

推荐答案

Outdated answer: See the other answers.


我不相信你所问的是可能的,至少没有一些 map ,也许?

看这里:Filtering embedded documents in MongoDB

这个答案建议你改变你的模式,以更好地适应你想如何处理数据.

您可以使用"点符号"或$elemMatch来获取具有匹配"note title"的正确文档...

> db.collection.find({ "notes.title" : "Hello MongoDB"}, { "notes.title" : 1"});

> db.collection.find({ "notes" : { "$elemMatch" : { "title" : "Hello MongoDB"} }});

但你会得到the whole array,而不仅仅是导致匹配的数组元素.

还有,需要考虑的事情...使用当前设置,很难对数组中的项目执行任何操作.

如果你不改变你的模式(如链接的答案所示)...我会考虑添加"ID"到数组中的每一个元素,这样你就可以在需要的时候很容易地删除它.

Mongodb相关问答推荐

MongoDB:如何通过增量向量递增整数向量

在出现错误时忽略mongodb事务回滚是好做法吗

如何在Golang保存到MongoDB时排除空数据值的问题?

MongoDB聚合如何对对象数组中的值求和

在MongoDB Aggregate for My BooksDB中将`$match`放在`$unwin`之前或之后的区别

MongoDB Aggregate 根据时间进行多重分组

MongoDB DB参考返回null值

Kotlin 使用初级构造实例化公开类

$lookup 的参数必须是字符串

如何过滤查找mongodb的结果

增加嵌套对象中的值?

MongoDB 的 Java 语法

Docker 内部的 Mongo 身份验证

django 和 mongodb 是否使迁移成为过go ?

如何在 Node.js 中格式化 Mongoose 的日期?

具有 AWS 云形成和自动zoom 的 Mongodb 集群

移动 MongoDB 的数据文件夹?

无法将 Mongoose 连接到 Atlas

在mongoose中查询虚拟属性

Mongoose upsert 不创建默认模式属性