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

Zagregowany wynik MongoDB z dwoma różnymi kluczami

Użyj następującego potoku agregacji, aby uzyskać żądaną listę identyfikatorów obiektów. Używa $ifNull operator agregacji, aby dodać _id pole, jeśli tablica general_products pole nie istnieje:

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"
            }
        }
    }
]);

Otrzymasz dokument z tablicą list_products z identyfikatorami obiektów:

/* 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. Wstaw tablicę obiektów do MongoDB

  2. Zrobić skrypt do tworzenia kolekcji MongoDB z powłoki Mongo?

  3. Mongoose Query do sortowania głównego dokumentu i poddokumentu według określonego pola

  4. MongoDB:Zapytanie o zagnieżdżone tablice

  5. Czy mogę używać MongoDB jako zamiennika CoreData na iOS?