[英]MongoDB Java - Translate query to mongodb Java driver
我有一個奇怪的問題。 我有一個查詢,我確定它可以正常工作,但是當我用Java翻譯它時,它不會返回任何內容。
MongoDB查詢為:
db.births.aggregate([
{
"$match": {
"day" : "March_13",
"events.year": "1929",
"events.info": /American/
}
},
{ "$unwind": "$events" },
{
"$match": {
"day" : "March_13",
"events.year": "1929",
"events.info": /American/
}
},
{
"$group": {
"_id": "$_id",
"day": { "$first": "$day" },
"events": { "$push": "$events" }
}
}
])
Java代碼是:
AggregateIterable<Document> result = mongoDatabase.getCollection(category).
aggregate(
Arrays.asList(
new Document("$match",
new Document("day", day).
append("events.year", year).
append("events.info", "/" + word + "/")),
new Document("$unwind", "$events"),
new Document("$match",
new Document("day", day).
append("events.year", year).
append("events.info", "/" + word + "/")),
new Document("$group",
new Document("_id", "$_id").
append("day", new Document("$first", "$day")).
append("events", new Document("$push", "$events")))));
請看看並告訴我將其翻譯成Java的方式是否錯誤或還有其他問題。
謝謝!
在Java中,您可以嘗試以下操作:
String m = "American";
DBObject eventInfoObject = new BasicDBObject(
"events.info",
java.util.regex.Pattern.compile(m)
);
這會將查詢{ "events.info" : { "$regex" : "American"}}
發送給MongoDB服務器{ "events.info" : { "$regex" : "American"}}
在您的代碼中替換:
"/" + word + "/"
與:
java.util.regex.Pattern.compile(word)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.