假设 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有关使用数组查询文档的更多信息。
https://stackoverflow.com/questions/14040562/