用Java实现MongoDB查询
我在MongoDB中有以下数据库结构(见下文),我想对字段“name”进行搜索查询 数据库结构:用Java实现MongoDB查询,java,mongodb,nested,Java,Mongodb,Nested,我在MongoDB中有以下数据库结构(见下文),我想对字段“name”进行搜索查询 数据库结构: { "_id" : ObjectId("505ad9a7ed5022cbe1f3dc2e"), "id" : "10", "description" : "", "members" : [{ "id" : "1", "name"
{
"_id" : ObjectId("505ad9a7ed5022cbe1f3dc2e"),
"id" : "10",
"description" : "",
"members" : [{
"id" : "1",
"name" : "Jack"
}, {
"id" : "2",
"name" : "Mike"
}, {
"id" : "3",
"name" : "Laura"
}, {
"id" : "4",
"name" : "Sara"
}, {
"id" : "240",
"name" : "Ronald"
}],
"status" : "active"
},
{
"_id" : ObjectId("5059c214707747cbc5819f6f"),
"id" : "12",
"description" : "",
"members" : [{
"id" : "19",
"name" : "Geoff"
}, {
"id" : "21",
"name" : "Andrew"
}, {
"id" : "23",
"name" : "Rachel"
}, {
"id" : "25",
"name" : "Susan"
}],
"status" : "active"
},
我有以下代码将在“描述”或“状态”字段上进行搜索。DBCollection=database.getCollection(“成员”)
问题是,我将如何在“members.name”字段上执行OR搜索?因此,如果我搜索名称或文本“Laura”,则id为10的文档/记录将出现在结果集中
我是否需要循环查看所有结果或类似的内容
谢谢你的帮助和建议 如果我理解正确的话,这实际上是一个关于如何在数组中搜索单个字段的问题。使用相关字段的完整路径。在本例中,它是“members.name”
现在,如果您想和成员名称一起查找包含两个特定成员的记录,只需将单个查询放入BasicDBList,就像您使用OR,然后将它们放在一起一样。如果要包含其他或查询列表,只需将该查询对象(在上面的代码示例中使用)放入要包含在AND中的基本列表中即可。对不起,我的意思是:问题是,如何在“members.name”字段上执行AND搜索,
$和
搜索是默认的。e、 g.连接查询时,这些查询将被AND。只有在组合$和以及$或查询时,才显式使用$和才有用-也许您可以编辑您的问题,以便更好地了解您尝试执行哪种类型的$和查询
BasicDBObject or1 = new BasicDBObject();
or1.put("description", Pattern.compile(keyword, Pattern.CASE_INSENSITIVE));
BasicDBObject or2 = new BasicDBObject();
or2.put("status", Pattern.compile(keyword, Pattern.CASE_INSENSITIVE));
BasicDBList or = new BasicDBList();
or.add(or1);
or.add(or2);
BasicDBObject query = new BasicDBObject();
query.put("$or", or);
BasicDBObject select = new BasicDBObject();
select.put("description", 1);
select.put("status", 1);
DBCollection collection = collection.find(query, select);