说是否有两个简单的Mongo文档,Person和Class。 Person引用类来模拟多对多这个人 - 这些类的关系。如何找到未在任何类别中注册的人(没有任何类的引用)?
我尝试了以下但似乎没有效果:
db.people.find({"class": {$exists: false}});
以上回报所有人,甚至是正在上课的人。
感谢任何输入。谢谢!
答案 0 :(得分:4)
Person引用类来模拟多对多这个人 - 这些类的关系。
首先,您必须定义如何建模。使用MongoDB有三种方法可以做到这一点。
根据您的查询,看起来您有#3,但这不是给定的。
如何找到未在任何课程中注册的人?
这将非常具体地说明您的数据实际存储在数据库中的方式。
假设people
包含对classes
的引用数组,您的数据可能如下所示:
{ _id: "John", classes: [ 'math', 'science', 'english' ] }
{ _id: "Mary", classes: [ 'computers', 'biology' ] }
{ _id: "Steve", classes: [ ] }
在这种情况下,“史蒂夫”显然没有课程。您的查询正在查找people
,其中classes
不存在。但在这种情况下,classes
确实存在,它只是空的。
如果您的数据如下所示,您可能希望使用[$size][1]
运算符。