MongoDB-查询嵌入文档,但投影显示键/值的路径?

时间:2018-05-14 22:48:28

标签: mongodb mongodb-query

基本上我想要

 db.scoreFacts.find(
  {"instrumentRanges.flute.minPitch": {$gte: 0, $lte:56}}, 
  {"instrumentRanges.flute.minPitch": 1})

返回

{ "_id" : "Bach_Brandenburg5_Mov1.xml", "minPitch" : 50 }

但我得到了:

{ "_id" : "Bach_Brandenburg5_Mov1.xml", "instrumentRanges" : { "flute" : { "minPitch" : 50 } } }

基本上返回“minPitch”的路径,这不是我需要的。如何只用.find()(没有地图等)来实现我想要的输出?感谢。

1 个答案:

答案 0 :(得分:1)

您无法使用标准.find()查询执行此操作。如果您希望更改文档结构,请查看使用aggregate()调用。然后,您可以使用投影来定义所需的结果字段。

例如:

db.scoreFacts.aggregate([
    { $match: {"instrumentRanges.flute.minPitch": {$gte: 0, $lte:56}} },
    { $project: {"minPitch": "$instrumentRanges.flute.minPitch"} }
]);

有关详细信息,请参阅relevant documentation。另外,请查看先决条件aggregation pipeline section

注意:我自己没有测试过上面的查询,因此您可能需要稍微改变它以获得您想要的行为。