Py学习  »  MongoDB

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

Don Branson • 4 年前 • 407 次点击  

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

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

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

此搜索将找到该文档:

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

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37871
 
407 次点击  
文章 [ 1 ]  |  最新文章 4 年前
B. Fleming
Reply   •   1 楼
B. Fleming    5 年前

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

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