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

mongodbの他のドキュメントの値に依存するドキュメントをクエリする

    非相関 を試してください ユースケースの3.6からのサブクエリ。

    のようなもの
    User.aggregate(
     [{$lookup:{
       from: "users",
       pipeline:[
        {$match: {_id:mongoose.Types.ObjectId(id)}},
        {$project: {_id:0,blockedIds:1}}
       ],
       as: "noncr"
     }},
     {$match:{
       $expr:{
         $not:[
          {$in:[
            $_id,
            {$arrayElemAt:["$noncr.blockedIds",0]}
          ]}
        ]
      }
    }},
    {$project:{noncr:0}}]
    )
    

    $ lookup 入力IDの「blockedIds」に続いて<を取得します。 code> $ match 「_id」がblockedIdのリストにないドキュメントをフィルタリングします。

    $ expr $matchステージで集計比較演算子を使用できます。

    $ arrayElemAt $lookup配列から最初の要素をフェッチします。

    $ in _idをblockedIdsと比較します。

    $ project 最終応答から「noncr」フィールドを削除するための除外あり。

    クエリをテストするときは、ルックアップステージの「from」属性でモデル名またはスキーマ名ではなくコレクション名を使用することに注意してください。



    1. このMongoDB/Node非同期の問題を回避するにはどうすればよいですか?

    2. Javaはバイトをバイナリセーフ文字列に変換します

    3. JestとRedis(データベースキャッシュのユニットテストの問題)

    4. mongodbのコレクションの最大サイズはいくつですか