MongoDB - 嵌套数组中对象更新的索引

时间:2015-04-15 17:25:07

标签: arrays mongodb indexing

假设我们有以下集合,我对此有疑问:

{
    "_id" : 1,
    "user_id" : 12345,
    "items" : [
            {
                    "item_id" : 1,
                    "value" : 21,
                    "status" : "active"
            },
            {
                    "item_id" : 2,
                    "value" : 22,
                    "status" : "active"
            },
            {
                    "item_id" : 3,
                    "value" : 23,
                    "status" : "active"
            },
            ...
            {
                    "item_id" : 1000,
                    "value" : 1001,
                    "status" : "active"
            },
    ]
}

在一个集合中,我有很多文档(与系统中的用户一样多,大约 100K文档集合)。在每个文档中,我都有 1000个文档内的数组“items”

将使用的操作列表:

  1. 用户登录系统后阅读整个文档(罕见操作)。
  2. 更新嵌套数组项目中的单个文档,并在每次“用户点击”(频繁操作)时设置“值”和“状态”
  3. db.items.update({_id : 1 , "items.item_id" : 1000} , {$set: {"items.$.value": 1000}})

    1. 将新文档插入到嵌套数组中包含1000个文档的集合中。此操作将在新用户注册(非常罕见的操作)
    2. 上完成

      问题是:我是否需要创建像这样的复合索引 db.items.createIndex( { "_id": 1, "items.item_id": 1 } ) 帮助MongoDB更新数组内部的某些文件或MongoDB无论是复合索引都可以在整个文档中进行搜索?或者也许有人可以为这种情况提出不同的架构?

0 个答案:

没有答案