java - 如何在 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
}
}
]
}
解决方案
要获取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} })
推荐阅读
- python - 使用 Python 和 Bit Bucket 的最佳方式
- typescript - 从装饰器识别的打字稿超类
- azure-devops - Azure DevOps 中的名称和显示名称有什么区别
- dictionary - 制作百分比条形图
- java - 如何在 Selenium Java Webdriver 中获取要在运行时验证的文本的类名
- oracle - 避免重复 oracle aapex
- java - Liferay 门户:使用 JSF 和 EJB-CDI 的 OSGI 模块化不使用 @Resource 注入/检索
- java - 使用 onPreviewFrame 运行 ML 模型
- javascript - 使用 Angular6 Service 构造函数初始化私有属性
- java - 在 Springboot 中修剪 @RequestParam