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

MongoDB обобщен резултат с два различни ключа

Използвайте следния канал за агрегиране, за да получите желания списък с ObjectIds. Това използва $ifNull оператор за агрегиране, за да добавите _id поле, ако масивът general_products полето не съществува:

db.products.aggregate([
    {
        "$match": {"warehouse_sku": /^1/ }
    },
    {
        "$group": {
            "_id": {
                "_id": "$_id",
                "general_products": "$general_products"
            },
            "data": {
                "$addToSet": "$_id"
            }
        }
    },
    {
        "$project": {
            "_id": 0,
            "general_products": {
                "$ifNull": ["$_id.general_products", "$data"]
            }
        }
    },
    {
        "$unwind": "$general_products"
    },
    {
        "$group": {
            "_id": null,
            "list_products": {
                "$addToSet": "$general_products"
            }
        }
    }
]);

Това ще ви даде документ с масив list_products с ObjectIds:

/* 1 */
{
    "result" : [ 
        {
            "_id" : null,
            "list_products" : [ 
                ObjectId("554b9f223d77c810e8915539"), 
                ObjectId("554b9f2e3d77c810e8915549"), 
                ObjectId("554b99b83d77c810e8915436"), 
                ObjectId("554b9f173d77c810e8915533"), 
                ObjectId("554b9f143d77c810e8915530"), 
                ObjectId("554b9f123d77c810e891552f")
            ]
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Използвайте MongoEngine и PyMongo заедно

  2. Единици, които да използвате за maxdistance и MongoDB?

  3. внедряване на mongodb distinct() в Meteor на сървъра?

  4. Как да импортирате JSON файл в MongoDB с помощта на Python

  5. Как да добавите MongoDB източник на данни в Orbeon