0
使用MongoDB的外壳使用:使用Java驱动程序运行聚合 - MongoDB的
db.bios.aggregate(
[
{$match:{"contribs.0.name":{"$exists":1}}},
{$project: {contribs:{$arrayElemAt:["$contribs",0]}}}
]
)
我怎样才能让使用Java驱动程序(2.14.1)相同的查询? 我尝试:
起初,我创建了一个DBOBJECT为$match
阶段:
DBObject match = new BasicDBObject("$match",new BasicDBObject("contribs.0.name",
new BasicDBObject("$exists",1)));
然后,我创建一个BasicDBList
:
BasicDBObject obj = new BasicDBObject("$contribs",0);
BasicDBList arrayElemAt = new BasicDBList();
arrayElemAt.add(obj);
这是$project
阶段:
DBObject project1 = new BasicDBObject("$project", new BasicDBObject("contribs",
new BasicDBObject("$arrayElemAt",arrayElemAt)));
最后我创建聚合通货膨胀管道:
List<DBObject> list = new ArrayList<>();
list.add(match);
list.add(project1);
AggregationOutput output = this.coll.aggregate(list);
$Match
阶段工作,但$project
没有。
我得到一个错误:"errmsg" : "invalid operator '$contribs'" , "code" : 15999
非常感谢。我被困了两个小时。我知道在Java Driver 3.0中有新功能,但是我用2.14.1开始了我的项目。然后,我将传递给Java驱动程序3.0+。 – DistribuzioneGaussiana