276

mongodb document(table) '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

'National Medal' という賞を受賞していて、1975 年に授与されなければならない人物を見つけたいです。別の年にこの賞を受賞している人物が他にもいる可能性があります。

賞の種類と年を使用してこの人物を見つけるにはどうすればよいですか。だから私は正確な人を得ることができます。

4

4 に答える 4

468

正しい方法は次のとおりです。

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

$elemMatch同じ配列要素内の複数のコンポーネントを一致させることができます。

モンゴがなければ$elemMatch、ある年には国家記章を、1975年にはいくつかの賞を受賞したユーザーを探しますが、1975年に国家記章を持ったユーザーは探しません。

詳細については、 MongoDB$elemMatchのドキュメントを参照してください。配列を使用したドキュメントのクエリの詳細については、 「操作ドキュメントを読む」を参照してください。

于 2012-12-26T15:00:16.077 に答える