MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да $setDifference в масив и обект с помощта на Mongo DB

Трябва да поправите това второ агрегиране и да получите всички UPIDs като масив. За да постигнете това, можете да използвате $cond и въз основа на $type или върнете масив, или използвайте $objectToArray за да стартирате преобразуването, опитайте:

db.Groups.aggregate([
    {
        $project: {
            students: {
                $cond: [ 
                    { $eq: [ { $type: "$members.regularStudent" }, "array" ] },
                    "$members.regularStudent",
                    { $map: { input: { "$objectToArray": "$members.regularStudent" }, as: "x", in: "$$x.v" } }
                ]
            }
        }
    },
    {
        $unwind: "$students"
    },
    {
        $group: {
            _id: null,
            UPIDs: { $addToSet: "$students" }
        }
    },
    {
        $project: {
            members: {
                $setDifference: [ userProductUPIDs , "$UPIDs" ]
            },
            _id : 0
        }
    }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да деактивирате flapdoodle вграден mongodb в определени тестове

  2. как да инсталирам драйвери на mongodb за c++ в ubuntu?

  3. MongoDB elemMatch не работи очаквано

  4. Mongoose - Грешка във версията:Не е намерен съответстващ документ за id

  5. MongoDb удостоверяване с помощта на Hibernate OGM