2015-12-28 151 views
1

我正嘗試使用MongoDB java驅動程序(3.0)執行簡單的聚合操作。如何使用JAVA API編寫下面的mongo shell查詢需要幫助。如何使用MongoDB 3.0 java驅動程序執行聚合

db.coll.aggregate([ 
    { $project: { 
     email_id: { $ifNull: [ "$email_id", " " ] }, 
     phone_num: { $ifNull: [ "$phone_num","NA" ] }, 
     id : 1, 
     firstname :1, 
     lastname :1, 
     status : 1 
     } 
    }, 
    { $match: { status: "true"} }, 
    { "$group": { 
     "_id": "$id", 
     "details": { "$push": { 
      "$concat": [ "$firstname", " ", "$lastname", " | ", "$email_id" , " | ", "$phone_num" ] 
     }} 
    }} 
]) 
+3

請張貼在這裏,你已經嘗試什麼 –

回答

3

這裏是你的shell的Java驅動程序查詢查詢

MongoClient mongo = new MongoClient();  
MongoDatabase database = mongo.getDatabase("your_database"); 
     Document emailIdDoc = new Document("$ifNull",Arrays.asList("$email_id", " ")); 
     Document phoneNumDoc = new Document("$ifNull", Arrays.asList("$phone_num", "NA")); 
     Document projectDoc = new Document("$project" , new Document("email_id", emailIdDoc).append("phone_num", phoneNumDoc).append("id" , 1).append("firstname" , 1).append("lastname", 1).append("status", 1)); 
     Document matchDoc = new Document("$match", new BasicDBObject("status", "true")); 
     Document groupDoc = new Document("$group", new Document("_id", "$id").append("details", new Document("$push", concat))); 
     AggregateIterable<Document> aggregationResult = db.getCollection("your_collection").aggregate(asList(projectDoc, matchDoc, groupDoc)); 

隨着過時的方法

MongoClient mongo = new MongoClient(); 
    DB db = mongo.getDB("your_database"); 
    BasicDBObject emailId = new BasicDBObject("$ifNull",Arrays.asList("$email_id", " ")); 
    BasicDBObject phoneNum = new BasicDBObject("$ifNull", Arrays.asList("$phone_num", "NA")); 
    DBObject project = new BasicDBObject("$project" , new BasicDBObject("email_id", emailId).append("phone_num", phoneNum).append("id" , 1).append("firstname" , 1).append("lastname", 1).append("status", 1)); 
    DBObject match = new BasicDBObject("$match", new BasicDBObject("status", "true")); 
    DBObject concat = new BasicDBObject("$concat", Arrays.asList("$firstname", " ", "$lastname", " | ", "$email_id" , " | ", "$phone_num")); 
    Document concatDoc = new Document("$concat", Arrays.asList("$firstname", " ", "$lastname", " | ", "$email_id" , " | ", "$phone_num")); 
    DBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$id").append("details", new BasicDBObject("$push", concat))); 

    AggregationOutput iterable = db.getCollection("your_collection").aggregate(project, match, group); 
+0

謝謝你的解決方案。我們使用的是Document,而不是「Arrays.asList」。如果您有任何鏈接有關於API的正確文檔,請分享 – gsuresh92

相關問題