在使用 map_reduce 查询 mongoDB 数据库时,我需要限制实际结果。我希望使用该query
选项,但这只会限制map
零件中的数据。我需要限制输出。
我的数据看起来像这样(省略了其他属性):
obj1: { name: "obj1", version: 1, someAttr = "a" },
obj1a: { name: "obj1", version: 2, someAttr= "b"},
obj2: { name: "obj2", version: 1 },
obj2a: { name: "obj2", version: 2} ...
我有name
每个版本共享相同的对象(每次更新都会增加)。
我需要获取每个对象的最新版本,并且我已经编写了 map/reduce 函数(它在 mongomapper 中完成):
地图:
function() {
emit(this.name, this);
}
减少:
function(key, values) {
var res = values[0];
for(var i=1; i<values.length; i++)
{
if(values[i].version >res.version)
{
res = values[i];
}
}
return res;
}
现在我不时需要限制结果,我只是query
选择这样做。IT 工作正常,但在一个用例中除外:
我需要最新版本的 obj1,它也someAttr
设置为"a"
.
所以我尝试的query
是:
name: "obj1", someAttr: "a"
预期的结果是一个空结果,因为最新版本没有someAttr
设置为"a"
。我得到的是版本 1 的 obj1 ......
如何将输出someAttr
限制为仅设置为的那些对象"a"
?