我已经阅读了MongoDB documentation以获取集合中的索引,并且还搜索了SO和Google以查询我的问题。我想得到实际的索引值。
或许我对MongoDB索引的错误理解。如果我一直在索引一个名为text
的字段,其中包含段落,我是否正确地认为索引的内容是段落中的每个单词?
无论是哪种情况,我都想检索已编入索引的值,db.collection.getIndexes()
似乎没有返回。
答案 0 :(得分:2)
是的,不,总的来说。
索引处理它们提供给索引的字段的“值”,并且非常像“卡索引”,因为有一个参考点可以查找匹配该术语的位置。
“你”似乎在询问的是"text indexes"。这是MongoDB和其他数据库中的一种特殊索引格式,它查看字段的“文本”内容,并将该内容中的每个“单词”分解为该“索引”中的值。
通常我们这样做:
db.collection.createIndex({ "text": "text" })
这里的“字段名称”是你提出的“文字”,但更重要的是这里的索引类型是“text”。
这允许您插入如下数据:
db.collection.insert({ "text": "The quick brown fox jumped over the lazy dog" })
然后使用$text
运算符进行搜索:
db.collection.find({ "$text": { "$search": "brown fox" } })
对于您在查询中提供的字词,它将返回并“排名”,具体取决于它们与您的集合索引中字段的给定“文本”的匹配程度。
请注意,“text”索引及其查询不会在特定字段上进行交互。但索引本身可以在多个领域进行。查询和“索引”本身的约束是任何给定集合上只能存在“一个”文本索引,否则会发生错误。
答案 1 :(得分:0)
根据mongodb的文档:
" db.collection.getIndexes()返回一个包含集合索引信息的文档数组。索引信息包括用于创建索引的键和选项。有关键和索引选项的信息,请参阅db.collection.createIndex()。"
首先必须使用createIndex()方法在集合上创建索引:
db.records.createIndex( { userid: 1 } )
索引支持userid字段的查询:
示例:
db.records.find( { userid: 2 } )
db.records.find( { userid: { $gt: 10 } } )
索引可帮助您避免扫描整个文档。它们基本上是对集合中特定部分的引用或指针。
文档更好地解释了它: