说我在MongoDB集合中有对象:
{
...
"json" : "{\"things\":[2494090781803658355,5114030115038563045,3035856943768375362,8931213615561493991,7574631742057150605,480863244020297489]}"
}
这是一个Azure“ MongoDB”,因此不支持所有功能,但可以支持。
此搜索将找到该文档:
db.coll.find({"json" : {$regex : "5114030115038563045|8931213615561493991"}})
当然,它正在扫描整个集合以提取这些记录。在“事物”列表中查找文档的有效/快捷方式是什么? 是否包含查询中的“事物”列表?似乎抛出诸如Solr或ElasticSearch之类的搜索引擎将解决此问题,也许 使用另一个Azure的Data Lake存储将使其更易于搜索,因此我正在考虑这些选项。他们不在此范围内 问题我想知道是否有Mongo式的方法来按索引搜索此收藏集。
答案 0 :(得分:2)
要存储JSON字符串,唯一可用的选择是将text index与$text operator结合使用。
但是,如果此文档结构不是一成不变的,则可以考虑将JSON作为嵌套的子文档单独存储(当然要有适当的卫生条件)。这将允许您在json.things
上构造索引,同时仍存储JSON字符串,并允许您在例如"json.things": {$in: [ "5114030115038563045", "8931213615561493991" ]}