假设mongodb文档(表)"users"是

{
    _id: 1,
    name: {
        first: 'John',
        last: 'Backus'
    },
    birth: new Date('Dec 03, 1924'),
    death: new Date('Mar 17, 2007'),
    contribs: ['Fortran', 'ALGOL', 'Backus-Naur Form', 'FP'],
    awards: [
        {
            award: 'National Medal',
            year: 1975,
            by: 'NSF'
        },
        {
            award: 'Turing Award',
            year: 1977,
            by: 'ACM'
        }
    ]
}
// ...and other object(person)s

我想找到1975年必须获得"国家奖章"的人

如何使用奖励类型和年份找到此人.这样我就能找到准确的人.

推荐答案

正确的做法是:

db.users.find({awards: {$elemMatch: {award:'National Medal', year:1975}}})

$elemMatch允许在同一数组元素中匹配多个组件.

如果没有$elemMatch,Mongo将在某一年寻找获得国家勋章的用户,并在1975年寻找一些奖项,但不会寻找1975年获得国家勋章的用户.

更多信息请参见MongoDB $elemMatch Documentation.有关使用数组查询文档的更多信息,请参见Read Operations Documentation.

Javascript相关问答推荐

Phaser框架-将子对象附加到Actor

django无法解析余数:[0] from carray[0]'

当运行d3示例代码时,没有显示任何内容

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

给定一个凸多边形作为一组边,如何根据到最近边的距离填充里面的区域

Mongoose post hook在使用await保存时不返回Postman响应

S文本内容和值不必要的不同

如何在ASP.NET JavaScript中使用Google Charts API仅对绘制为负方向的条形图移动堆叠条形图标签位置

如何强制Sphinx中的自定义js/css文件始终加载更改而不缓存?

类构造函数不能在没有用With Router包装的情况下调用

try 使用javascript隐藏下拉 Select

禁用.js文件扩展名并从目录导入隐式根index.js时,找不到NodeJS导入模块

在使用位板时,如何在Java脚本中判断Connect 4板中中柱的对称性?

如何将数组用作复合函数参数?

同一类的所有div';S的模式窗口

如何防止ionic 输入中的特殊字符.?

处理app.param()中的多个参数

在GraphQL解析器中修改上下文值

react 路由如何使用从加载器返回的数据

在Java脚本中构建接口的对象