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 年に授与されたはずの「国民勲章」を受賞した人物を見つけたいのですが、別の年にこの賞を受賞した人物がいる可能性があります。
賞の種類と年を使ってこの人物を見つけるにはどうしたらよいでしょうか。そうすれば正確な人物がわかります。
ベストアンサー1
正しい方法は次のとおりです。
db.users.find({awards: {$elemMatch: {award:'National Medal', year:1975}}})
$elemMatch
同じ配列要素内の複数のコンポーネントを一致させることができます。
mongoがない場合、$elemMatch
ある年に National Medal を受賞したユーザーと 1975 年に何らかの賞を受賞したユーザーを検索しますが、1975 年に National Medal を受賞したユーザーは検索しません。
見るMongoDB $elemMatch ドキュメント詳細については、操作ドキュメントを読む配列を使用してドキュメントをクエリする方法の詳細については、こちらをご覧ください。