1. ホーム
  2. ジャバスクリプト

[解決済み】mongodbでオブジェクトの配列内を検索する方法

2022-04-01 21:29:22

質問

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 は、ある年の国民栄誉賞を受賞したユーザーを探しますが、1975年の国民栄誉賞を受賞したユーザーを探しません。

参照 MongoDB $elemMatch ドキュメント をご覧ください。参照 運用ドキュメントを読む は、配列による文書の問い合わせについて、より詳しい情報を提供しています。