我有一个模式,它有一个名为ownerId
的字段和一个名为participantIds
. 在前端用户可以选择参与者。我正在使用这些 id 来过滤文档,方法是participantIds
使用$all
运算符和来自前端的参与者 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 我想用字段上的$all
运算符查询文档,但应该包含在此查询中。participantsIds
ownerId
我想要的是而不是查询:
participantsIds: ['5f57ff55202b0e00065fbd14', '5f57ff55202b0e00065fbd15', '5f57ff55202b0e00065fbd13']
我想查询:
participantsIds: ['5f57ff55202b0e00065fbd14', '5f57ff55202b0e00065fbd15', '5f57ff55202b0e00065fbd13', '5f57ff55202b0e00065fbd10']