我有集合users
,每个用户对象都有一个名为purchases
的字段,它是一个对象数组。用户对象如下所示:
User:
{
...
purchases: [
{ time: 2355645366, amount: 2000 },
{ time: 2456456334, amount: 2000 },
{ time: 2435645433, amount: 2000 },
]
}
如何在所有用户中查询所有购买内容,以及按time
等字段进行排序?我期望的结果是一系列购买对象。
答案 0 :(得分:1)
您可以使用聚合操作,这是一个非常方便的工具,适用于这样的场景
db.users.aggregate({$unwind: '$purchases'},{$sort: {'purchases.time': 1}},{$group: {_id: 0, 'purchases': {$push: '$purchases'}}})
返回的文档将具有以下结构:
{ "_id" : 0, "purchases" : [...all users purchases sorted by time here...]}