MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak $wyjrzeć, unikając wartości null w agregacie mongodb?

Możesz to obejść, nie używając $in .

Wygląda to tak $map jest wykonywany osobno dla każdego dokumentu w items kolekcja. Gdybyś miał uruchomić mapę w $addFields etapie, możesz użyć prostej formy wyszukiwania, aby dopasować dodane pole do _id , co automatycznie obsłuży brakujące, null i tablica.

Usuń dodane pole za pomocą $project w razie potrzeby.

db.case.aggregate([
    {$lookup: {
        from: "insurance",
        let: { ipids: "$sale.bill.insurancePlanId" },
        pipeline: [
            {$unwind: "$coveragePlans"},
            {$match: { $expr: { $in: ["$coveragePlans._id", "$$ipids"] } }},
            {$project: { _id: 0, name: 1 }}
        ],
        as: "insurances"
    }}
    {$addFields:{
        matchArray:{$map: {
                       input: "$$iid",
                       in: { $toObjectId: "$$this" }
        }}
    }},
    {$lookup: {
        from: "item",
        localField: "matchArray",
        foreignField:"_id",
        as: "items"
    }},
    {$project:{
        arrayField: 0 
    }}
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zapytanie MongoDB na podstawie liczby osadzonych dokumentów

  2. Jak wyeksportować obiekt, który stanie się dostępny tylko w asynchronicznym wywołaniu zwrotnym?

  3. MONGODB [DEBUG] cursor.refresh() dla kursora 7078636577051629992

  4. Jaki jest najlepszy sposób na paginację ajaxową za pomocą MongoDb i Nodejs?

  5. MGO :Nie można kanonizować zapytania:BadValue nieznany operator:$meta