我有以下
{
"_id" : ObjectId("56d808d826941f84bc697b4e"),
"outerArray" : [
{
"middleArray" : [
{
"someKey": "value",
"innerArray" : [
"F999-99999",
"F999-999999",
"FAF-99999",
"FSF-99999",
"FSW-99999",
"FSX-99999",
"FAF-999999",
"FSF-999999",
"FSW-999999",
"FSX-999999"
]
}
]
}
]
}
当我查询
时Model.find({outerArray.middleArray.someKey = 'value'},outerArray.middleArray.innerArray)},function(err,results){
//do some thing
}
我正在使用innerArray以及外部结构。但我想要的只是内部阵列部分,如 -
"innerArray" : [
"F999-99999",
"F999-999999",
"FAF-99999",
"FSF-99999",
"FSW-99999",
"FSX-99999",
"FAF-999999",
"FSF-999999",
"FSW-999999",
"FSX-999999"
]
所以我不需要遍历所有外部数组,如outerArray [0] .middleArray [0] .innerArray
我调查了预测,但我找不到任何东西。请帮我解决一下这个。非常感谢...
答案 0 :(得分:1)
怎么样?
var _ = require('lodash');
var data = {
"_id" : "SOMETHING",
"outerArray" : [
{
"middleArray" : [
{
"someKey": "value",
"innerArray" : [
"F999-99999",
"F999-999999",
"FAF-99999",
"FSF-99999",
"FSW-99999",
"FSX-99999",
"FAF-999999",
"FSF-999999",
"FSW-999999",
"FSX-999999"
]
}
]
}
]
}
data = _.result(data, "outerArray[0].middleArray[0].innerArray", null);
console.log(data);
你也试过这个吗?
Model.find(
{outerArray.middleArray.someKey: 'value'},
'outerArray.middleArray.innerArray',
function(err,results){
console.log(results);
});
答案 1 :(得分:1)
你不能直接做你想做的事。
MongoDB是一个文档数据库,而不是关系数据库。当您检索(find
)文档时,它将始终检索整个文档。
如果您只想要内部数组,则需要将其从返回给您的完整文档中拉出来。