【发布时间】:2020-09-17 22:14:33
【问题描述】:
我有一个架构,它有一个名为ownerId 的字段和一个名为participantIds 的数组字段。在前端用户可以选择参与者。我使用这些 id 来过滤文档,方法是使用 $all 运算符查询 participantIds 和来自前端的参与者 ID 列表。这是完美的,只是文档中的participantsIds 不包含ownerId。我考虑过使用聚合添加一个新字段,该字段由如下列表组成:[participantIds, ownerId],然后使用$all 查询这个新字段,然后再次删除该字段,因为前端不需要它。
这样的查询会是什么样子,或者有没有更好的方法来实现这种行为?我现在真的很迷茫,因为我在过去 3 个小时里都在尝试用 mongo_dart 来实现它。
这是架构的样子:
{
_id: ObjectId(),
title: 'Title of the Event',
startDate: '2020-09-09T00:00:00.000',
endDate: '2020-09-09T00:00:00.000',
startHour: 1,
durationHours: 1,
ownerId: '5f57ff55202b0e00065fbd10',
participantsIds: ['5f57ff55202b0e00065fbd14', '5f57ff55202b0e00065fbd15', '5f57ff55202b0e00065fbd13'],
classesIds: [],
categoriesIds: [],
roomsIds: [],
creationTime: '2020-09-10T16:42:14.966',
description: 'Some Desc'
}
Tl;dr 我想在participantsIds 字段上使用$all 运算符查询文档但 ownerId 应该包含在此查询中。
我想要的不是查询:
participantsIds: ['5f57ff55202b0e00065fbd14', '5f57ff55202b0e00065fbd15', '5f57ff55202b0e00065fbd13']
我想查询:
participantsIds: ['5f57ff55202b0e00065fbd14', '5f57ff55202b0e00065fbd15', '5f57ff55202b0e00065fbd13', '5f57ff55202b0e00065fbd10']
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework mongo-dart