[英]MongoDB query for value in field with regex using Java
我正在尝试从我的文档集合中查询:
{ "_id" : ObjectId("94"), "EmailAddress" :"adam@gmail.com","Interests": "CZ1001,CE2004" }
{ "_id" : ObjectId("44"), "EmailAddress" :"ben@gmail.com", "Interests":"CE1001,CE4002" }
{ "_id" : ObjectId("54"), "EmailAddress" :"chris@gmail.com","Interests":"CE1001,CE2002" }
一个示例是,由于字段“ Interests”具有我要查找的值,因此我想检索电子邮件地址。
例如,如果我搜索CZ1001,我将获得Obj 1 EmailAddress详细信息。
如果我搜索CE1001,我将获得Obj 2和Obj 3 EmailAddress的详细信息。
如果有帮助,当我在开始时插入记录时,对象ID是唯一创建的。
我可以使用以下方法在MongoDB Shell上获取对象
db.users.find(Module: {"$regex": "CE1001"}})
只需要电子邮件地址。
我试图获取所有电子邮件地址,并被卡在此代码中。
Document doc = (Document) collection.find(new BasicDBObject("Module", {"$regex":"CE1001"})) .projection(Projections.fields(Projections.include("EmailAddress"), Projections.excludeId())).first();
new BasicDBObject("Module", {"$regex":"CE1001"})
。
允许使用new BasicDBObject("Module", String_variable)
对于特定的Interest
,您的mongoDB查询看起来像(以CE1001为例):
db.collection.find({
$or: [
{
Interests: {
$regex: "^CE1001,"
}
},
{
Interests: {
$regex: ",CE1001,"
}
},
{
Interests: {
$regex: ",CE1001$"
}
}
]
},
{
"EmailAddress": 1
})
对于碰巧不喜欢此帖子的其他人。 以下是工作代码。 致谢@Veeram。
FindIterable <Document> results = collection.find(new BasicDBObject("Module", new BasicDBObject("$regex", "CE1001")) .projection(Projections.fields(Projections.include("EmailAddress"), Projections.excludeId()));
for(Document doc : results) {
doc.getString("EmailAddress")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.