使用MongoDB涵盖的索引

时间:2014-04-27 03:01:28

标签: mongodb database

这与http://docs.mongodb.org/manual/core/query-optimization的MongoDB手册有关。

我不了解涵盖查询的目的。如果我们在类型和项目字段上有一个带索引的集合,如下所示

{ type: 1, item: 1 } 

如果查询是这样的

db.inventory.find( { type: "food", item:/^c/ },
               { item: 1, _id: 0 } )

这只会返回项目吗?为什么它只返回项目? MongoDB查询的第二部分 在找到部分之后,即

    { item: 1, _id: 0 } )

它意味着什么?什么是0和1? 为什么下面的查询返回item和id?

 db.inventory.find( { type: "food", item:/^c/ },
               { item: 1 } )

1 个答案:

答案 0 :(得分:0)

参考db.collection.find的文件,它说非常清楚,第二个参数是关于哪个归档:

  

可选。指定使用投影运算符返回的字段。要返回匹配文档中的所有字段,请省略此参数。

当然,您可以使用这些投影操作符。但大多数时候我们只指定要返回的字段以及哪些字段不返回。所以

{ item: 1, _id: 0 }

表示结果集应该只包含字段项,而不是_id(因为id默认为在结果集中,除非你说不)。

另请注意,在JavaScript世界中,1/0也表示true / false。如果它有助于你理解。因此:

1 == true  // true
0 == false  // true

这是因为JavaScript中的自动转换。如果您不想转换,

1 === true  // false