【问题标题】:MongoDB Tags Key IndexingMongoDB 标签键索引
【发布时间】:2012-08-22 02:30:18
【问题描述】:

查看我找到的一些教程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

【问题讨论】:

    标签: mongodb tags indexing multikey


    【解决方案1】:

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

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

    并查询:

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

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

    【讨论】:

    • 废话,抱歉我的意思是说 {"tags" : [{"key1" : "value1"}, {"key2" : "value2"}]} 不是 {"tags" : [{ “key1”:“value1”,“key2”:“value2”}]}。我不确定这是否会改变任何东西。
    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多