gpt4 book ai didi

mongodb - 如何找到引用另一个文档的 MongoDB 记录?

转载 作者:可可西里 更新时间:2023-11-01 10:01:29 25 4
gpt4 key购买 nike

假设有两个简单的 Mongo 文档,Person 和 Class。 Person 引用 Class 来模拟多对多这个人接受这些类的关系。我如何找到未在任何类别中注册(未引用任何类别)的人?

我尝试了以下但似乎没有用:

db.people.find({"class": {$exists: false}});

以上返回所有的人,甚至是正在类的人。

感谢任何输入。谢谢!

最佳答案

Person references Class to model a many-to-many this-person-takes-these-classes relationship.

首先,您必须定义其建模方式。可以通过三种方式使用 MongoDB 执行此操作。

  1. 中间表,类似于在 SQL 中的实现方式。
  2. 一个集合的引用数组。
  3. 两个集合中的引用数组。

根据您的查询,您似乎有#3,但这不是给定的。

How do I find the person that is not registered in ANY classes?

这将非常具体地说明您的数据在数据库中的实际存储方式。

假设 people 包含对 classes 的引用数组,您的数据可能如下所示:

{ _id: "John", classes: [ 'math', 'science', 'english' ] }
{ _id: "Mary", classes: [ 'computers', 'biology' ] }
{ _id: "Steve", classes: [ ] }

在这种情况下,“Steve”显然没有上课。您的查询正在寻找 people,其中 classes 不存在。但在这种情况下,classes 确实存在,它只是空的。

如果您的数据看起来像这样,您可能想要使用 [$size][1] 运算符。

关于mongodb - 如何找到引用另一个文档的 MongoDB 记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com