sql >> Databáze >  >> NoSQL >> MongoDB

Mongo $lookup filtr pomocí vnořeného dotazu

$match uvnitř $lookup potrubí nemá žádný vztah s jobCollection dokumenty. Filtruje pouze dokumenty podle tasks sbírka. Takže musíte použít ještě jeden $match fázi po $lookup pro odfiltrování ROOT(jobCollection ) dokumenty.

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. MongoDB + Web App:Databáze na uživatele

  2. Redis Connection přes socket na Node.js

  3. Filtrujte vnořené pole s podmínkami založenými na hodnotách víceúrovňových objektů a aktualizujte je - agregát MongoDB + aktualizace

  4. Fronta úloh s redis pomocí BLPOP