MongoDB 标签键索引

标签 mongodb tags indexing multikey

浏览我找到的一些教程 MongoDB: get documents by tags ,似乎大多数标签都是作为项目列表创建的。在我的架构中,我想要动态标签(键值对),因此集合中的每个项目都有一个标签字段,如下所示:

{"tags" : {"key1" : "value1", "key2", "value2"}}

但是我想在标签字段内的键上建立索引。 AFAIK,这是不可能的(即使使用多键索引),因为键可以是任意的?

我是否需要将架构迁移为如下所示:

{"tags" : [{"key1" : "value1"}, {"key2" : "value2"}]}

如果是这样,我的索引会是这样的:

db.foo.ensureIndex({"tags" : 1})

这里建议:

http://www.mongodb.org/display/DOCS/Using+Multikeys+to+Simulate+a+Large+Number+of+Indexes

最佳答案

是的,您可以将子文档数组作为标签进行索引,但您始终需要查询完整的子文档。如上所述使用

创建索引
db.foo.ensureIndex({'tags': 1})

并查询:

db.foo.find('tags': {'key1': 'value1'}) 

这将使用索引并返回在其标签数组中具有该特定子文档的所有文档。

关于MongoDB 标签键索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144747/

相关文章:

VIM:插入空的 ERB 标签

sql - 具有许多 boolean 变量的模式的最佳实践

java - 在 Web 应用程序中管理数据库连接的最佳实践

c# - 更新 MongoDB 中嵌套实体数组中的属性

Git 工作流最佳实践

javascript - JavaScript 中的复合 B 树索引

python - 在 numpy 中向量化这个 for 循环

node.js - 如何在数组中查找数组的大小?

node.js - Mongoose/MongoDB batchSize(30) 仍然返回所有结果

css - 在 rel 属性中提到的样式表中大写 A