【发布时间】:2014-07-01 12:14:57
【问题描述】:
我在 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 运算符查找地址。
我的问题是,有没有办法把它变成一个查询?有没有更好的方法来查询这个? (obs:这只是一个例子,我的问题是我无法将地址嵌入到用户中)
【问题讨论】:
-
不,MongoDB 不支持连接。 stackoverflow.com/questions/4067197/mongodb-and-joins
-
是的,我知道 mongo db 不支持连接。我想了解的是,解决上面列出的问题的最佳方法是什么。例如,有什么方法可以获取用户的所有 id 并将其放入另一个查询中?
-
“最佳方式”问题通常不适合 SO,但如果您更新问题以包含使用
$in执行此操作的代码,并且您对某个问题有特定疑问使用这种方法,效果会更好。 -
问题实际上是为了更好地理解 mongo DB。我没有现实生活中的问题。但这里有:我知道我可以从这样的用户那里获取 ID 列表:
db.users.find({age:{$gt:20}})我知道我可以像这样查询地址列表:db.addresses.find({userId:{$in:[123,124,125,126]}})我知道我可以投射第一个查询以仅返回 Id ,我唯一不知道的是我是否可以在第二个查询中使用第一个查询的结果。如果这是不可能的,有没有其他方法可以用第一个集合的结果查询第二个集合? -
当然,看到这个问题:stackoverflow.com/q/22318719/1259510
标签: mongodb mongodb-query aggregation-framework non-relational-database document-based-database