在Mongo Collection中有效使用Array字段

时间:2015-02-27 06:29:13

标签: java arrays mongodb indexing

我们在我们的应用程序中使用Mongo DB,在我们的集合中,我们将数组存储为字段。例如:

{
    "_id" : ObjectId("54ef67573848ec32b156b053"),
    "articleId" : "46384262",
    "host" : "example.com",
    "url" : "http://example.com/articleshow/46384262.cms",
    "publishTime" : NumberLong("1424954100000"),
    "tags" : [
            "wind power",
            "mytrah",
            "make in india",
            "government",
            "andhra pradesh"
    ],
    "catIds" : [
            "2147477890",
            "13352306",
            "13358350",
            "13358361"
    ]
}

现在我的情况是需要在标签和catIds数组上创建索引,因为它们是搜索字段 但是在数组字段上创建索引会极大地增加索引的大小 你能否提出一个更好的方法来实现这个目标。

1 个答案:

答案 0 :(得分:0)

您可以通过这种方式重组您的收藏。现在您将有3个集合:

Coll1,文件看起来像这样:

{
   "_id" : ObjectId("54ef67573848ec32b156b053"),
   "articleId" : "46384262",
   ... your other stuff
}

标签,文档如下所示:

{
      '_id': 1,
      'name': 'wind power'
   }
   {
      '_id': 2,
      'name': 'mytrash'
   }
   ....

以及将coll1链接到标签的集合:

{
   "collID" : ObjectId("54ef67573848ec32b156b053"),
   "tagID": 1
}
{
   "collID" : ObjectId("54ef67573848ec32b156b053"),
   "tagID": 2
}

Mongo没有连接,因此您需要在应用程序层上进行连接。它会带你3个mongo查询。索引的大小应该更小,但在进行重大更改之前对其进行测试。