当前位置: 首页 > 面试题库 >

如何在mongodb中的对象数组中搜索

陶福
2023-03-14
问题内容

假设mongodb文档(表)“用户”为

{
  _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 允许您在同一数组元素中匹配多个组件

没有$elemMatchmongo的用户会在1975年代和某些奖项中寻找获得National Medal的用户,但不会寻找1975年获得National
Medal的用户。

有关更多信息,请参阅MongoDB $
elemMatch文档
。有关有关使用数组查询文档的更多信息,请参见阅读操作文档。



 类似资料:
  • 假设mongodb文档(表)“users”为 我想找到1975年必须获得“国家奖章”的人,可能还有其他人在不同的年份获得该奖项。 我怎样才能找到这个人使用奖励类型和年份。所以我可以得到确切的人。

  • 我在NodeJS和MongoDB上工作,我有这样的数据库JSON 我想删除上的教室 _id:"123"还有类ID:"2046" ,所以在删除过程之后,我将得到如下JSON 所以,请帮助我做到这一点,任何建议都非常欢迎,谢谢

  • 问题内容: 在Angular中,我在范围内有一个对象,该对象返回许多对象。每个都有一个ID(此ID存储在一个平面文件中,因此没有DB,而且我似乎无法使用) 在我的控制器中: 在我看来,我还有关于默认隐藏的鱼类的更多附加信息,但是当我单击简单的显示更多标签时,我想调用该函数。我的函数看起来像: 现在,在视图中将显示更多详细信息。但是,在搜索了文档之后,我无法弄清楚如何搜索该数组。 那么如何查询数组?

  • 问题内容: 文件: 有没有办法从数组中提取特定对象?IE如何从项数组中提取ID为23的整个项对象。 我努力了: 但是我很确定我没有正确使用’pull’。据我了解,pull将从数组中拉出字段,而不是对象。 关于如何将整个对象从数组中拉出的任何想法。 另外,我尝试在mongoose / nodejs中执行此操作,也不确定这种类型的内容是否在mongoose API中,但我找不到它。 问题答案: 尝试.

  • 我在这里遵循这个例子: https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html 以下查询: 与预期的一条记录匹配。假设我只想返回用户为“约翰·史密斯”和“艾利斯·怀特”的文档。 我试过: 但这返回零结果。我如何获得同时包含“Alice White”和“John Smith”的文档(这应该只是在原始结果中

  • 我有一个包含以下数据的文档集合 我想获取具有“管理员”和“用户”角色且状态为“已创建”的用户的文档计数。现在,我正在尝试匹配电子邮件ID和角色。 有什么方法可以比较来自同一对象的数组元素吗?