我有两个收藏集 - Tickets
和Users
。 user
可以有一对多tickets
的位置。故障单集合定义如下
Ticket = {_id, ownerId, profile: {name}}
ownerId用于查找属于特定人员的所有故障单。我需要编写一个查询,让所有用户都没有门票。
如何在不必遍历所有用户的情况下编写此查询,检查用户ID是否显示在任何故障单中?
双向存储会导致我出现性能问题吗?例如,如果我要更改我的users
集合并添加tickets: [ticketID, ticketID2, ...]
数组?
答案 0 :(得分:0)
我会使用存储在用户中的票证数组。据我所知,Mongo实际上没有办法根据另一个集合中的(缺少)元素查询一个集合。但是,使用数组,您只需执行db.users.find({tickets:[]})
。