我正在玩http://docs.mongodb.org/manual/reference/bios-example-collection的bios示例集合,以自学如何查询mongodb.

我想检索有关year : 1975_id : 1人获奖的信息.

我试过几个问题,其中包括

bios.find({
    "_id" : 1,
    "awards" : {
        "year" : 1975
    }
});

但我从未收到过正确的文件.如何在数组中检索此文档?

推荐答案

你必须使用dot notation:

bios.find({"_id" : 1, "awards.year" : 1975 });

这是一个毫无意义的查询,因为查询中也有_id个,但我想这是因为你在玩一个例子.还有,你说你在寻找1967年的奖项,但代码上写着1975年.

如果搜索"awards" : { "year" : 1975 },mongodb将查找整个子文档awards的精确匹配项.在这种情况下,这不是你想要的.此外,由于awards是一个数组,因此它总是错误的.如果你想在列表中查找特定的奖励文件,$elemMatch是最好的 Select .

Mongodb相关问答推荐

MongoDB:子文档中仅存在于父文档中的返回字段?

geoLocation或geoNear为坐标和半径使用let变量

分页时根据唯一字段mongodb获取数据

从 node.js 的 mongodb 集合中删除文档

为什么mongodb的文档中存储键名

在mongo聚合中将ObjectID转换为字符串

将MongoDB连接到前端?

如何在 MongoDb 中进行类似于嵌套 Sql Select 查询的嵌套查询

Mongo:统计一组文档中单词出现的次数

.NET 4 中是否有 mongodb C# 驱动程序支持 System.Dynamic.DynamicObject?

MongoDB 批处理操作的最大大小是多少?

Mongoose 不创建新集合

在 Mongo 中,$near 和 $nearSphere 有什么区别?

Mongodb错误:The positional operator did not find the match needed from the query

获取 mongodb 中所有唯一标签的列表

RoboMongo:不显示所有文档

Mongodb Atlas:管理员未授权执行命令

如何在mongoDB中检索其值以特定字符结尾的文档

用 MongoDB 中的属性表示多对多关系的最佳模型

在 MongoDB 中比较日期(moment.js)