[英]MongoDB Query with Java
我在MongoDB中具有以下數據庫結構(請參見下文),並且我想對“名稱”字段進行搜索查詢
數據庫結構:
{
"_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”);
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);
問題是,如何對“ members.name”字段進行“或”搜索? 因此,如果我要搜索名稱或文本“ Laura”,則ID / ID為10的文檔/記錄將出現在結果集中。
我是否必須遍歷所有結果或類似內容?
感謝您的幫助或建議!
如果我正確理解了這個問題,那實際上是一個關於如何在數組內部搜索單個字段的問題。 使用完整路徑到相關字段。 在這種情況下,它是“ members.name”。
現在,如果要將AND成員名稱在一起以查找包含兩個特定成員的記錄,只需像使用OR那樣將各個查詢放入BasicDBList中,然后再將AND在一起。 如果要包括另一個OR查詢列表,只需將該查詢對象(在上面的代碼示例中使用)扔到那個BasicDBList中,以將其與AND包括在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.