嵌套的字典键不断变化时,如何使用嵌套字典查询mongodb文档?

问题描述

我正在使用mongoengine使用ODM查询数据并将其保存到我的mongo数据库中。 我有一个文档,其属性名为interfaces,其中包含另一个字典作为其值。

示例:

attr1: value
attr2: value
interfaces:
    {
        interface1: {'ip': 1.2.3.4,test:test2}
        interface2: {'ip': 2.3.4.5,test:test3}
        .
        .
        .
    }

每个文档在interfaces属性下可以具有数百个接口。

我正在寻找一种测试'1.2.3.4'是否在文档的任何接口下的方法

我发现使用document.objects()并像这样遍历所有记录:

records = document.objects()
for key in records.interfaces.keys():
    if records.interfaces[key]['ip'] == “1.2.3.4”:
        dosomething

但是最终该集合将包含1000多个文档,这似乎是一个缓慢的解决方案。 有什么方法可以直接从mongodb查询吗?

谢谢您的帮助!

解决方法

不能。 mongodb的本质是键,值对存储。您无法在不知道键的情况下查找值。

我建议按照以下方式重新设计架构:

Symfony4

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...