2016-06-16 12 views
3

Ich möchte die Daten, die alle zur Verkäufer-ID gehören, mit Ausnahme von seller_id.So finden Sie die Daten aus dem Unterdokument in Mongodb

Zum Beispiel: seller_id :1001, ich will alle Daten gehören zu dieser Verkäufer-ID lange mit c_name,_id,c_orderseller_id:1000,1002 ohne usw.

{ 
    "_id" : ObjectId("575e83376a6f714301dd4693"), 
    "c_name" : "Amit", 
    "c_order" : [ 
     { 
      "seller_id" : "1000", 
      "product_id" : "2000", 
      "product_name" : "iphone 5s", 
      "price" : "22000" 
     }, 
     { 
      "seller_id" : "1001", 
      "product_id" : "2001", 
      "product_name" : "iphone 6s", 
      "price" : "42000" 
     }, 
     { 
      "seller_id" : "1002", 
      "product_id" : "2003", 
      "product_name" : "laptop", 
      "price" : "28000" 
     } 
    ], 
    "customer_id" : "21" 
}, 
{ 
    "_id" : ObjectId("575e838f6a6f714301dd4694"), 
    "c_name" : "Prabal", 
    "c_order" : [ 
     { 
      "seller_id" : "1004", 
      "product_id" : "2004", 
      "product_name" : "belt", 
      "price" : "2000" 
     }, 
     { 
      "seller_id" : "1001", 
      "product_id" : "2005", 
      "product_name" : "coffee mug", 
      "price" : "400" 
     }, 
     { 
      "seller_id" : "1002", 
      "product_id" : "2006", 
      "product_name" : "pen drive", 
      "price" : "800" 
     } 
    ], 
    "customer_id" : "22" 
}, 
{ 
    "_id" : ObjectId("575e894c6a6f714301dd4695"), 
    "c_name" : "Raman", 
    "c_order" : [ 
     { 
      "seller_id" : "1001", 
      "product_id" : "2004", 
      "product_name" : "belt", 
      "price" : "2000" 
     }, 
     { 
      "seller_id" : "1001", 
      "product_id" : "2005", 
      "product_name" : "coffee mug", 
      "price" : "400" 
     }, 
     { 
      "seller_id" : "1002", 
      "product_id" : "2006", 
      "product_name" : "pen drive", 
      "price" : "800" 
     } 
    ], 
    "customer_id" : "22" 
} 
+0

Sie sollten versuchen, diese mit 'aggregate' zu ​​tun. Kannst du uns zeigen, was du versucht hast? – Shrabanee

+1

in Fortsetzung zu @ titi23, lesen Sie über https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/. hoffentlich sollte dies Ihnen helfen, die Abfrage zu schreiben. – KaSh

Antwort

1

Ist diese Arbeit für Sie?

db.getCollection('collectionName').aggregate([ 

    { "$unwind" : "$c_order" }, 
    { "$match" : { "c_order.seller_id" : "1001"}} 

]) 

Sie sollten die folgende Ausgabe:

/* 1 */ 
{ 
    "_id" : ObjectId("575e83376a6f714301dd4693"), 
    "c_name" : "Amit", 
    "c_order" : { 
     "seller_id" : "1001", 
     "product_id" : "2001", 
     "product_name" : "iphone 6s", 
     "price" : "42000" 
    }, 
    "customer_id" : "21" 
} 

/* 2 */ 
{ 
    "_id" : ObjectId("575e838f6a6f714301dd4694"), 
    "c_name" : "Prabal", 
    "c_order" : { 
     "seller_id" : "1001", 
     "product_id" : "2005", 
     "product_name" : "coffee mug", 
     "price" : "400" 
    }, 
    "customer_id" : "22" 
} 

/* 3 */ 
{ 
    "_id" : ObjectId("575e894c6a6f714301dd4695"), 
    "c_name" : "Raman", 
    "c_order" : { 
     "seller_id" : "1001", 
     "product_id" : "2004", 
     "product_name" : "belt", 
     "price" : "2000" 
    }, 
    "customer_id" : "22" 
} 

/* 4 */ 
{ 
    "_id" : ObjectId("575e894c6a6f714301dd4695"), 
    "c_name" : "Raman", 
    "c_order" : { 
     "seller_id" : "1001", 
     "product_id" : "2005", 
     "product_name" : "coffee mug", 
     "price" : "400" 
    }, 
    "customer_id" : "22" 
} 
+0

Danke. Es funktioniert gut. –

+0

Um noch spezifischer zu sein Verwenden Sie das Projekt db.getCollection ('Mytest'). Aggregate ([{"$ abwickeln": "$ c_order"}, {"$ match": {"c_order.seller_id": "1000"} }, {$ projekt: {"c_name": 1, "c_order.product_id": 1, "c_order.product_name": 1, "c_order.price": 1}} ]) –

Verwandte Themen