sql >> データベース >  >> NoSQL >> MongoDB

ネストされた配列内のMongoDBクエリ

    1つと対戦する フィールドの場合、ドット表記を使用してフィールドへのパスを表現するだけです。

    > db.user.find({"profile.wishlist._id": 2})
    

    で説明されているようにMongoDBドキュメント 、配列の場合(wishlistなど) ) any の場合、これはドキュメントと一致します 配列内のサブドキュメントはフィールド値と一致します。

    いくつかと照合する必要がある場合は注意してください フィールドの場合、次のいずれかを使用する必要があります:

    • $elemMatch 一致するすべてのフィールドが同じに属する必要がある場合 サブドキュメント;
    • または さまざまなフィールドが同じサブドキュメントと一致する必要がない場合は、ドット表記を使用して表現された複数のフィールド。

    これら2つのクエリの出力を比較して、これを把握してください。

    > db.user.find({"profile.wishlist._id": 2, "profile.wishlist.name": "a1"})
    //                                      ^                            ^^
    //                              will return your document even if the was no 
    //                              subdocument having both _id=2 and name=a1
    
    > db.user.find({"profile.wishlist": {$elemMatch: { _id: 2, name: "a1"}}})
    //                                                      ^         ^^
    //                                         no result as there was no subdocument
    //                                         matching  _both_ _id=2 and name=a1
    



    1. redisでキーを複製します

    2. Express / Node.jsエラー:参照エラー:Resが定義されていません

    3. 新しい/別のmongoデータベースにユーザーを追加するには、どのMongoDBユーザー権限が必要ですか?

    4. マングース-'保存'メソッドは存在しません