我有一个是产品组文件,就像这样:
[
{
options: [],
products: [
{
sku: '123',
name: 'Product name 1'
}, {
sku: '476',
name: 'Product name 2'
}
]
}, {
options: [],
products: [
{
sku: '265',
name: 'Product name 3'
}, {
sku: '789',
name: 'Product name 4'
}
]
}
]
我需要做的是其中包括分拣不仅是产品的群体,但也内的产品阵列的高级查询。
我想在目前的方法是使用aggregate()
与$unwind
和$sort
,然后尝试把群体集合(该$unwind
打破了products
阵列出来后)。
Products.aggregate([
{ $unwind: '$products' },
{ $sort: {
'products.sku': -1
} },
{ $group: {
'_id': '$_id',
something: { $push: '$$ROOT' }
} }
]).exec()
这很明显是$group
这是不对的。我使用'_id': '$_id'
把原来的MongoDB _id
回来了,但我不知道怎么说:
“的产品组ID组,和包括所有原始字段”
所以真的我试图$unwind
和$sort
该产品阵列,然后我想要$wind_it_back_up_again
... :-)
我该如何实现这个..?
更新:这个问题是关于保持所有领域,而分组。
的可能的复制[MongoDB的排序内部阵列(http://stackoverflow.com/questions/15388127/mongodb-sort-inner-array) – Veeram
@Veeram我认为这是问题,不仅有关排序的内部阵列,但也关于保持所有领域,所以它是不同的 –
好吧。为了保持领域,你可以尝试这样的事情。 '{$ group:{_id:'$ _id',options:{'$ first:'$ options'},'products':{$ push:'$ products'}}}'保持原样。 – Veeram