MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Filter Mongo $lookup menggunakan kueri bersarang

$match di dalam $lookup pipeline tidak ada hubungannya dengan jobCollection dokumen. Itu hanya menyaring dokumen untuk tasks koleksi. Jadi, Anda harus menggunakan satu lagi $match tahap setelah $lookup untuk menyaring ROOT(jobCollection ) dokumen.

jobCollection.aggregate([
  { "$match": { "$text": { "$search": "1234" }}},
  { "$lookup": {
    "from": "task",
    "let": { "job_id": "$_id" },
    "pipeline": [
      { "$match": {
        "$expr": {
          "$and": [
            { "$eq": ["$job", "$$job_id"] },
            { "$eq": ["$status", "FAILED"] }
          ]
        }
      }}
    ],
    "as": "tasks"
  }},
  { "$match": { "tasks": { "$ne": [] }}},
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menambahkan sumber data MongoDB di Orbeon

  2. MongoDB tidak dapat menggunakan bagian untuk melintasi elemen

  3. Mongoose:apa perbedaan antara Model.create dan Collection.insert

  4. Cara memperbarui array bersarang

  5. Apakah Azure Cosmos DB tidak mendukung indeks unik MongoDB/Mongoose?