MongoDB通过包含JSON的文档索引进行搜索

时间:2018-08-23 21:46:47

标签: mongodb mongodb-query

说我在MongoDB集合中有对象:

{
    ...
    "json" : "{\"things\":[2494090781803658355,5114030115038563045,3035856943768375362,8931213615561493991,7574631742057150605,480863244020297489]}"
}

这是一个Azure“ MongoDB”,因此不支持所有功能,但可以支持。

此搜索将找到该文档:

db.coll.find({"json" : {$regex : "5114030115038563045|8931213615561493991"}})

当然,它正在扫描整个集合以提取这些记录。在“事物”列表中查找文档的有效/快捷方式是什么? 是否包含查询中的“事物”列表?似乎抛出诸如Solr或ElasticSearch之类的搜索引擎将解决此问题,也许 使用另一个Azure的Data Lake存储将使其更易于搜索,因此我正在考虑这些选项。他们不在此范围内 问题我想知道是否有Mongo式的方法来按索引搜索此收藏集。

1 个答案:

答案 0 :(得分:2)

要存储JSON字符串,唯一可用的选择是将text index$text operator结合使用。

但是,如果此文档结构不是一成不变的,则可以考虑将JSON作为嵌套的子文档单独存储(当然要有适当的卫生条件)。这将允许您在json.things上构造索引,同时仍存储JSON字符串,并允许您在例如"json.things": {$in: [ "5114030115038563045", "8931213615561493991" ]}