[英]Filter embedded Array object in mongodb document using Java driver
[英]MongoDB java driver create Document with $in filter
我認為這應該很容易做到,但我只是想不通。 我想要實現的是此查詢
{inbox:{$in:["main","fun-inbox"]} ,status:"Open"}
我設法使它像這樣
Bson q = Filters
.and(Filters
.in("inbox", inboxes),
Filters
.eq("status", statusID));
但是不一樣,因為我使用了$and
運算符
可以使用Document
完成嗎?
這是我嘗試過的方法,我知道我定義的方法是錯誤的,但是我將舉這個例子只是為了更好地了解我要實現的目標
Document q1 = new Document()
.append("inbox", Filters.in("inbox", inboxes))
.append("status", statusID);
您擁有的是正確的,並且沒有明確地$ anded。
幕后的Java Mongo驅動程序確定何時使用$和何時不使用$。
例如
沒有$and
Bson bson = Filters.and(Filters.in("inbox", inboxes), Filters.eq("status", status));
BsonDocument bsonDocument = bson.toBsonDocument(BsonDocument.class, MongoClient.getDefaultCodecRegistry());
System.out.print(bsonDocument.toString()); //{ "inbox" : { "$in" : inboxes }, "status" : status }
與$and
Bson bson = Filters.and(Filters.in("inbox", inboxes), Filters.eq("inbox", inbox));
BsonDocument bsonDocument = bson.toBsonDocument(BsonDocument.class, MongoClient.getDefaultCodecRegistry());
System.out.print(bsonDocument.toString()); //{ "$and" : [{ "inbox" : { "$in" : inboxes } }, { "inbox" : inbox }] }
將查詢轉換為Java代碼以返回Iterable Document類型
FindIterable<Document> iterable = database.getCollection("mails").find(new Document("inbox", new Document("$in", inValues)).append("status", "open"));
和inValues
是一個ArrayList
作為
ArrayList<String> inValues = new ArrayList<String> ();
inValues.add("main");
inValues.add("fun-inbox");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.