【发布时间】:2012-06-24 23:19:19
【问题描述】:
假设我在一个名为“用户”的集合中有以下文档架构:
{
name: 'John',
items: [ {}, {}, {}, ... ]
}
“items”数组包含以下格式的对象:
{
item_id: "1234",
name: "some item"
}
每个用户可以在 'items' 数组中嵌入多个项目。
现在,我希望能够通过 item_id 为给定用户获取项目。
例如,我想获取属于名为“John”的用户的 id 为“1234”的项目。
我可以用 mongoDB 做到这一点吗?我想利用它强大的数组索引,但我不确定您是否可以对嵌入式数组运行查询并从数组而不是包含它的文档返回对象。
我知道我可以使用 {users.items.item_id: "1234"} 获取拥有特定项目的用户。但我想从数组中获取实际项目,而不是用户。
或者,是否有更好的方法来组织这些数据,以便我可以轻松获得我想要的东西?我对 mongodb 还是很陌生。
感谢您提供的任何帮助或建议。
【问题讨论】:
-
您好,@Nebs,您可以查看接受的答案并进行更改吗?因为在较新的 mongodb 版本中,不需要两个单独的集合就可以解决这个问题。