我在 mongo db 中有以下模型:
用户集合
{
_id:12345,
name:"Joe",
age:15,
}
地址集合
{
_id:7663,
userId:12345,
Street:"xyz",
number:"1235",
city:"New York",
state:"NY"
}
现在我想获取20岁以上用户的所有地址。我的想法是查询20岁以上用户的所有id,并根据此查询的结果使用$in运算符来查找地址。
我的问题是,有没有办法将其变成一个查询?有没有更好的方法来查询这个? (注:这只是一个例子,由于我的问题,我无法将地址嵌入到用户中)
最佳答案
在 Mongo shell 中,您可以在另一个查询中使用一个查询的结果。例如:
use database // the name of your database
db.coll1.find({_id:{$nin:db.coll2.distinct("coll1_id")}})
这里集合 coll1 包含一个 _id 字段。然后,您可以检查不在集合 coll2 的 coll1_id 字段列表中的任何 id。因此,如果 coll1 中的记录没有通过 coll2 中的 coll1_id 字段进行引用,那么这是清理两个表的方法。
另一种方法做同样的事情:
use database // the name of your database
temp = db.coll2.distinct("coll1_id");
db.coll1.find({_id:{$nin:temp}})
第一个示例用一个命令执行此操作,第二个示例用两个命令执行此操作,但概念是相同的。在另一个查询中使用一个查询的结果。有很多不同的方法可以做到这一点。此外,如果您不仅仅使用distinct(),则 .toArray() 方法对于创建数组也很有用。
关于mongodb - Mongodb 使用 $in 在另一个查询中使用查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23637743/