2016-03-03 24 views
0

我有以下如何在使用猫鼬查询时仅获取部分文档?

{ 
    "_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部分像 -

"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

我看着预测,但我遍历无法找到任何东西。请帮我解决一下这个。非常感谢...

+1

如何使用lodash包提取需要的元素? – num8er

回答

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

你不能直接做你想做的。

MongoDB是一个文档数据库,而不是关系数据库。当您检索(find)文档时,它将始终检索整个文档。

如果您只想要内部数组,您需要将其从返回给您的完整文档中提取出来。

+0

对于一些澄清,顶级键可以[有选择地包括/排除](https://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/) – cdbajorin