1
У меня есть коллекция, которая имеет поле типа массива. Я хочу сортировать на основе поля sub-array, но Mongo не сортирует данные.
Моя коллекция:
{
"_id" : ObjectId("51f1fcc08188d3117c6da351"),
"cust_id" : "abc123",
"ord_date" : ISODate("2012-10-03T18:30:00Z"),
"status" : "A",
"price" : 25,
"items" : [{
"sku" : "ggg",
"qty" : 7,
"price" : 2.5
}, {
"sku" : "ppp",
"qty" : 5,
"price" : 2.5
}]
}
Мой запрос является:
db.orders.aggregate([
{ "$unwind" : "$items"} ,
{ "$match" : { }} ,
{ "$group" : { "items" : { "$addToSet" : { "sku" : "$items.sku"}} , "_id" : { }}} ,
{ "$sort" : { "items.sku" : 1}} ,
{ "$project" : { "_id" : 0 , "items" : 1}}
])
Результат:
"result" : [
{
"items" : [
{
"sku" : "ppp"
},
{
"sku" : "ggg"
}
]
}
],
"ok" : 1
}
В то время как "sku":"ggg"
должен прийти первым, когда это восхождении г.
Это не работает, даже чем: rs0: Primary> db.orders.aggregate ([ ... { "$ раскрутку": " $ items "}, ... {" $ sort ": {" items.sku ": 1}}, ... {" $ match ": {}}, ... {" $ group ": {"items": {"$ addToSet": {"sku": "$ items.sku}}," _id ": null}}, ... {" $ project ": {" _id ": 0, "items": 1}} ...]) { "result": [{"items": [{"sku": "ppp"}, {"sku": "ggg"}] } } –
@PhalguniMukherjee Мне нужно будет проверить это, он должен $ нажать, чтобы установить как таковое, его нужно заказать, теоретически – Sammaye
Да, '$ push' работал. –