在一对多关系中查找查询

时间:2017-05-31 11:51:30

标签: mongodb one-to-many

支持我的文档结构如下

var order = {
order_id : "1234",
plan_name: "Basic plan",
app_id:["app-id-1","app-id-2"]
}

它有一对多的关系结构。 我把它插入mongo像这样

db.orders.insert(order) 

我还在order_idapp_id上创建了索引。 现在,我有app_id,我想找到它的order_id

如何编写查询查找 我知道我需要使用 db.orders.find({"app_id":""}),但app_id是一个数组。 或者我还缺少其他技术吗?

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式查询数组。 如果您想在app_id数组中找到app-id-1作为值的所有订单,您只需查询

app_id: "app-1-id" 

这将返回所有在其数组中具有该值的订单。 如果您想查找具有一组应用ID的所有订单,您可以查询

app_id: {$all: <array_of_app_ids>}

要查找仅包含一组特定ID且没有其他订单的所有订单,您可以将$ all与$ size配对

app_id: {$all: <array_of_app_ids>, $size: <array_of_app_ids.length>}

但如果传递单个值,mongoDB将返回其数组中具有该值的所有条目