首页 > 解决方案 > 如何在 Mongodb-java 驱动程序中获取 Arrays ArrayOfObjects 的值

问题描述

我的文档如下所示。我需要获取 Email Systems.Bob 和 Email Systems.System = Bob 的值。我已经尝试使用下面的 MongodbQuery 但没有得到正确的结果。任何人都可以建议如何使用 Mongodb 获得所需的结果Java 驱动程序。查询: db.users.find( { "电子邮件系统": { $elemMatch: {$eq: "Atlas"} } } );

{ 
    "_id" : ObjectId("5f0890e870e631865877e"), 
    "user" : "testuser", 
    "Email" : "testuser@sample.com", 
    "Batch Systems" : [
        "STAR", 
        "STORY", 
        "ITEMS",    
    ], 
    "Email Systems" : [
        {
            "Bob" : {
                "System" : "Bob", 
                **"result"** : true
            }
        }, 
        {
            "Wild" : {
                "System" : "Wild", 
                "result" : true
            }
        },
        {
            "CRaft" : {
                "System" : "Craft", 
                "result" : false
            }
        }
    ]
}

标签: javaspring-bootmongodb-java

解决方案


要获取Email Systems.Bob您可以使用此查询:

db.users.find({ "Email Systems.Bob": { $exists: true} })

来取Email Systems[].{dynamic-key}.System == 'Bob'
我认为不可能在查询中为动态键传递某种正则表达式,AFAIK。

在这里,您可以获取所有带有字段的文档Email Systems并在您的 java 代码中对其进行过滤。(虽然效率不高)

db.users.find({ "Email Systems": { $exists: true} })

推荐阅读