Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java查询mongodb_Java_Mongodb - Fatal编程技术网

如何使用java查询mongodb

如何使用java查询mongodb,java,mongodb,Java,Mongodb,如何在java中查询上面的查询,我已经尝试使用下面的代码 db.FNTeams.aggregate([ { "$unwind": "$mailIDs" },{ "$lookup": {"from": "FNContacts", "localField": "mailIDs", "foreignField": "_id&qu

如何在java中查询上面的查询,我已经尝试使用下面的代码

 db.FNTeams.aggregate([ { "$unwind": "$mailIDs" },{ "$lookup": {"from": 
 "FNContacts", "localField": "mailIDs", "foreignField": "_id", "as": 
 "productObjects" }}, { "$group": { "_id": "$_id", "mailIDs": { "$push": 
 "$mailIDs" }, "UserID":{"$push":"$UserID"},"TeamName": 
 {"$push":"$TeamName"},"productObjects": { "$push": "$productObjects" }}}])

但我的输出是空的。上面的查询提供了在cmd中运行时所需的确切输出。

您可以使用AggregationOperation类,如中所指定

大概是这样的:

    DBCollection collection = db.getCollection("FNActivity");
    DBObject unwind1 = new BasicDBObject("$unwind", "$mailIDs");
    DBObject lookup = new BasicDBObject("$lookup", new BasicDBObject("from", 
    "FNContacts")
    .append("localField", "mailIDs").append("foreignField", 
    "_id").append("as", "mailWithID"));

    BasicDBObject pushField = new BasicDBObject();
    pushField.append("_id", "$_id");
    pushField.append("UserID", new BasicDBObject("$push", "$UserID"));
    pushField.append("TeamName", new BasicDBObject("$push", "$TeamName"));
    pushField.append("TeamDesc", new BasicDBObject("$push", "$TeamDesc"));
    pushField.append("Status", new BasicDBObject("$push", "$Status"));
    pushField.append("MailWithID", new BasicDBObject("$push", 
    "$mailWithID"));
    DBObject group = new BasicDBObject("$group", pushField);

    AggregationOutput output = collection.aggregate(Arrays.asList(group, 
    lookup, unwind1));
publicstaticvoidcheckmongooperations(){
ApplicationContext ctx=新注释配置ApplicationContext(MongoConfig.class);
MongoOperations MongoOperations=(MongoOperations)ctx.getBean(“mongoTemplate”);
AggregationOperation match=Aggregation.match(标准,其中(“国家”)为(“tiro”);
AggregationOperation unwind=Aggregation.unwind(“myDetails”);
AggregationOperation match2=Aggregation.match(Criteria.where(“myDetails.type”).is(“health”);
AggregationOperation sort=Aggregation.sort(sort.Direction.ASC,“myDetails.datetime”);
AggregationOperation limit=聚合限制(1);
聚合聚合=聚合.newAggregation(匹配、展开、匹配2、排序、限制);
System.out.println(“聚合=”+聚合);
AggregationResults输出=mongoOperation.aggregate(聚合,“gui_数据”,聚合FactoryResult.class);
System.out.println(“output=“+output.getMappedResults().get(0.getCountry());
}

您可以使用spring数据编写spring启动应用程序

public static void checkMongoOperations(){
    ApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class);
    MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); 

    AggregationOperation match = Aggregation.match(Criteria.where("country").is("tiro"));
    AggregationOperation unwind = Aggregation.unwind("myDetails");
    AggregationOperation match2 = Aggregation.match(Criteria.where("myDetails.type").is("health"));
    AggregationOperation sort = Aggregation.sort(Sort.Direction.ASC, "myDetails.datetime");
    AggregationOperation limit = Aggregation.limit(1);

    Aggregation aggregation = Aggregation.newAggregation(match, unwind, match2, sort, limit);
    System.out.println("Aggregation = "+aggregation);
    AggregationResults<AggregateFactoryResult> output = mongoOperation.aggregate(aggregation, "gui_data", AggregateFactoryResult.class);
    System.out.println("output = "+output.getMappedResults().get(0).getCountry());
}