2

MongoDB 的文档解释了多键索引。考虑这份comment文件。

{
 "_id": ObjectId(...)
 "title": "Grocery Quality"
 "comments": [
    { author_id: ObjectId(...)
      date: Date(...)
      text: "Please expand the cheddar selection." },
    { author_id: ObjectId(...)
      date: Date(...)
      text: "Please expand the mustard selection." },
    { author_id: ObjectId(...)
      date: Date(...)
      text: "Please expand the olive selection." }
 ]
}

文档解释说可以在comments.text, 或任何comments' 字段上建立索引。但是,是否可以对comments密钥本身进行索引?

这篇文章演示了对字符串数组的索引,但是,上面的comments字段是JSON 对象数组

根据 Antoine Girbal 的文章,似乎可以对 JSON 对象数组进行索引,其中每个 JSON 对象具有不同的键名。但是,数组中的每个 JSON 对象共享相同的键名似乎是不可能的。

示例 - https://gist.github.com/kman007us/6797422

4

1 回答 1

2

是的,您可以索引子文档,它们可以在多键索引中。索引整个子文档时,它只会在搜索整个文档时匹配,例如:

db.test.find({records: {hair: "brown"}})

搜索records完全匹配的文档,{hair: "brown"}它可以使用索引来找到它。

如果您想查找任何具有hair="brown"和任何其他字段的子文档,则需要点符号,例如:

db.test.find({"records.hair": "brown"})

但是,没有可用于此的索引 - 所以它是全表扫描。

请注意:索引大小有限制,整个文档很容易超过该大小。

于 2013-10-02T17:56:40.973 回答