从MongoDB中检索数据子集

时间:2012-09-29 17:36:17

标签: mongodb mongodb-query

如果我的收藏类似于:

[
    { "test": [ { "a": 1, "b": 2 }, { "a": 10, "b": 1 } ] },
    { "test": [ { "a": 5, "b": 1 }, { "a": 14, "b": 2 } ] },
    ...
]

ab时,如何仅获取由2值组成的数据子集?在SQL中,这类似于:

SELECT test.a FROM collection WHERE test.b = 2

我明白我可以用以下内容限制我得到的数据:

collection.find({ }, { "test.a": 1 })

但是返回所有a值。如何限制它,使其仅返回b2 {SQL等价物的WHERE test.b = 2部分的值?

1 个答案:

答案 0 :(得分:2)

您可以通过添加选择器对象作为find调用的第一个参数并使用$elemMatch投影操作符来执行此操作:

collection.find({ 'test.b': 2 }, { test: { $elemMatch: { b: 2 } }, 'test.a': 1 })

但是这只会返回test数据元素为每个文档b为2.如果{{{}}中有多个b:2元素,则需要使用聚合框架1}}数组。