MongoDB查询嵌入式文档字段

时间:2015-07-02 07:54:06

标签: mongodb

我的收藏结构如下图所示:

enter image description here

我正在尝试查询每个引擎中的字段“name”:

db.getCollection('scan').find({},
   {
        "engines": {
            "$elemMatch": {
                "name": 1
            }
        }
    }
)

但返回的结果只包含“_id”:

enter image description here

有谁知道为什么? 谢谢!

1 个答案:

答案 0 :(得分:2)

  

我正在尝试查询每个引擎中的字段“name”:

假设这个数据样本:

 driver.findElement(By.xpath("//th[@data-title='Package Detail']//span[@class='k-icon k-filter']")).click();

您可以使用投影运算符中的点符号查询所有嵌入字段db.collection.insert([ { engines: { ahnlab: { name: "x", value: "1" }}}, { engines: { ahnlab: { name: "y", value: "2" }}}, ])

name
  • > db.collection.find({},{"engines.ahnlab.name": 1, "_id":0 }) { "engines" : { "ahnlab" : { "name" : "x" } } } { "engines" : { "ahnlab" : { "name" : "y" } } } 将指示MongoDB保留("engines.ahnlab.name": 1)嵌入的名称字段;
  • 1将指示MongoDB 保留"_id": 0字段。

如果您需要将输出作为平面数据结构,则应使用聚合框架和$project operator来重写文档:

_id