代码之家  ›  专栏  ›  技术社区  ›  Don Branson marios

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

  •  0
  • Don Branson marios  · 技术社区  · 6 年前

    假设我在MongoDB集合中有对象:

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

    它是一个Azure“MongoDB”,因此不支持所有功能,但假设它支持。

    此搜索将找到该文档:

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

    当然,它是扫描整个收集来提取这些记录。找到“事物”列表中的文档的有效/快速方法是什么? 是否包含查询中的任何“事物”列表?像Solr或ElasticSearch这样的搜索引擎可以解决这个问题,也许 使用另一个Azure的数据湖存储将使其更易于搜索,因此我正在考虑这些选项。他们不在这个范围之内 不过,我想知道是否有一种蒙古人的方法可以按索引搜索这个收藏集。

    1 回复  |  直到 6 年前
        1
  •  2
  •   B. Fleming    6 年前

    如果要存储JSON字符串,唯一可用的选项是使用 text index 用一个 $text operator .

    但是,如果这个文档结构不是一成不变的,那么您也可以考虑将JSON单独存储为嵌套的子文档(当然,使用适当的环境卫生)。这将允许您在 json.things ,同时仍然存储JSON字符串,并允许您对例如 "json.things": {$in: [ "5114030115038563045", "8931213615561493991" ]}