2012-05-04 37 views
12

Tôi phải viết một truy vấn giả phức tạp bằng cách sử dụng java nhưng không thể thực hiện được.Truy vấn Mongo DB trong java

truy vấn

Các Mongo trông như thế này:

db.video.findOne({ 
    $or: [ 
     { key1: { $in : [764] } }, 
     { key2: {$in : [list2] } }, 
     { $and [ { key2 : 3}, {key4:67} ] } 
    ] 
}) 

tôi phải viết các truy vấn trên bằng cách sử dụng lớp QueryBuilder. Tôi có thể làm gì?

Cảm ơn

Trả lời

17

Sử dụng QueryBuilder truy vấn của bạn sẽ trông như thế này

DBObject query = QueryBuilder.start().or(
    QueryBuilder.start("key1").in(764).get(), 
    QueryBuilder.start("key2").in(keys).get(), 
    QueryBuilder.start().and("key3").is(3).and("key4").is(64).get() 
).get(); 

Xem xét sử dụng jongo (một API trên Mongo-java-lái xe), bạn có thể dễ dàng sao chép/truy vấn dán từ vỏ:

collection.findOne("{$or:[{key1: {$in:[764]}},{key2:{$in:[#]}}, {$and:[{key3:3},{key4:67}]}]}", keys).as(People.class); 
+0

Nhưng cách thực hiện truy vấn (DBObject)? – Qasim

6

Tôi đã gặp vấn đề tương tự và tôi đã nhận được giải pháp theo cách khác:

ArrayList orList = new ArrayList(); 
ArrayList andList = new ArrayList(); 

orList.add(new BasicDBObject("key1", new BasicDBObject("$in", 764)));     
orList.add(new BasicDBObject("key2", new BasicDBObject("$in", list2))); 

andList.add(new BasicDBObject("key2", 3)); 
andList.add(new BasicDBObject("key4", 67)); 

orList.add(new BasicDBObject("$and", andList)); 

BasicDBObject query = new BasicDBObject("$or", orList); 
+0

Nhưng cách thực hiện truy vấn (DBObject)? – Qasim

Các vấn đề liên quan