Поиск агрегатов Mongoose - Как фильтровать по определенному идентификатору

Причина для меня - 2 следующего кода в одном xml

<?xml version="1.0" encoding="utf-8"?>
1
задан Saravana 17 January 2019 в 01:36
поделиться

2 ответа

Вы можете попробовать агрегацию ниже для версии mongodb ниже 3.6

db.business.aggregate([
    {$match : {_id : 1}},
    {$lookup : {from : "clinics", localField : "clinics", foreignField : "_id", as : "clinics"}},
    {$addFields : {clinics : {$filter : {input : "$clinics", as : "c", cond : {$ne : ["$c._id", 1]}}}}}
]).pretty()

результат

{ "_id" : 1, "name" : "some business name", "clinics" : [ { "_id" : 2, "name" : "some name2" }, { "_id" : 3, "name" : "some name3" } ] }
0
ответ дан Saravana 17 January 2019 в 01:36
поделиться

Вы можете использовать ниже aggregation с mongodb 3.6 и выше

db.BusinessCollection.aggregate([
  { "$match": { "clinics": { "$type": "array" }}},
  { "$lookup": {
    "from": "ClinicsCollection",
    "let": { "clinics": "$clinics" },
    "pipeline": [
      { "$match": {
        "$expr": {
          "$and": [
            { "$in": ["

Вы можете использовать ниже aggregation с mongodb 3.6 и выше

[110]id", "$clinics"] }, { "$not": { "$eq": ["

Вы можете использовать ниже aggregation с mongodb 3.6 и выше

[110]id", 1] }} ] } }} ], "as": "clinics" }} ])
0
ответ дан Anthony Winzlet 17 January 2019 в 01:36
поделиться