我的收藏中有两种结构:
{
_id: "date1",
users: [{"user": "123", ...}, {"user": "456", ...}]
}
以及
{
_id: "date2",
points: [{"point": "1234", ...}, {"point": "5678", ...}]
}
我需要做一个agregation,它返回给我这些文件的列表,只有特定的点或用户信息,并带有skip和limit。比如:
[
{_id: "date1", user: {"user": "123", ...}},
{_id: "date2", point: {"point": "1234", ...}},
]
我用过,我是蒙哥人,你能给我推荐吗?你知道吗
collection.aggregate([
{"$unwind": "$users"},
{"$unwind": "$points"},
{"$match": {"$or": [
{'users.user': an_user},
{'points.point': a_point}]}},
{"$sort": {"_id": -1}},
{"$skip": 10},
{"$limit": 10}
])
根据您提供的文档示例,您可以仅使用db.collection.find(),例如:
根据您的用例,这可能并不理想,因为您要执行
find()
两次。 这将返回一个带有_id
的文档列表。上述查询相当于说:另见MongoDB Indexes
说到上面,你应该重新考虑你的文档模式。根据您的用例,您可能会在以后查询数据时遇到困难,并且可能会影响查询性能。请查看MongoDB Data Models以提供有关如何设计模式的更多信息。你知道吗
相关问题 更多 >
编程相关推荐