我有一个包含联系人的集合,每个联系人文档都有firstname
和lastname
属性。
现在我想使用Java和版本3.2中的MongoDb Java驱动程序查询数据库。
db.getCollection('contacts').aggregate(
{
$project:{
fullName:{
$concat: [ "$firstName", " ", "$lastName" ]
}
}
},
{
$match:{
fullName:"John Doe"
}
}
);
AggregateIterable<Document> documents = contactUserCollection.aggregate(Arrays.asList(project(computed("fullName", "$firstName $lastName")), match(eq("fullName", firstLastName))));
谢谢。
您可以尝试以下方法:
/*
MONGO SHELL :
var pipeline = [
{
"$project": {
"otherfieldsA": 1,
"otherfieldsB": 1,
"otherfieldsC": 1,
"fullName": {
"$concat": [ "$fistName", " ", "$lastName" ]
}
}
}
{
"$match": { "fullName": "John Doe" }
}
];
db.contacts.aggregate(pipeline);
*/
public class JavaAggregation {
public static void main(String args[]) throws UnknownHostException {
MongoClient mongo = new MongoClient();
DB db = mongo.getDB("test");
DBCollection coll = db.getCollection("contacts");
// create the pipeline operations, build the $project operations
BasicDBList concatenate = new BasicDBList();
concatenate.add("$firstName");
concatenate.add(" ");
concatenate.add("$lastName");
DBObject fullName = new BasicDBObject("$concat", concatenate);
DBObject fields = new BasicDBObject("otherfieldsA", 1);
fields.put("otherfieldsB", 1);
fields.put("otherfieldsC", 1);
fields.put("fullName", fullName);
DBObject project = new BasicDBObject("$project", fields);
// create the $match operator
DBObject match = new BasicDBObject("$match",
new BasicDBObject("fullName", "John Doe")
);
AggregationOutput documents = coll.aggregate(match, project, group, sort);
for (DBObject result : documents.results()) {
System.out.println(result);
}
}
}
我开始在我的应用程序中使用MongoDB。我正在使用Robo3T学习和测试查询,现在,我正在将查询翻译成C#。 我对蒙古机器人3T的质疑 在Robo 3T上运行上述脚本,其检索到以下结果: 现在,我试图在我的. NET MVC项目上重现这个结果,我面临着将子字符串转换为C#的困难。 C#代码 这种方式很好,但是,它是按整个字符串日期分组的,我想按短字符串日期分组,如:“2019-03-01”。 我
我的目标是使用聚合框架创建一个管道来对我的数据进行分组,然后将这个管道与java驱动程序一起使用。MongoDB v4.0.3 我使用MongoDB Compass创建了以下管道(减少到重要部分): 这导致以下(生成的)Java代码: 集合中$组阶段之前的数据如下所示: $组阶段应返回以下数据结构: 问题所在 Mongo Compass按预期预览了阶段的结果,但使用java驱动程序的阶段的结果非常
我想在Mongo 3.2中执行聚合,如下所述,但在Java中: https://docs.mongodb.org/master/reference/operator/aggregation/lookup/#pipe._S_lookup 目前,我的java查询对象非常简单: 除了按employeId进行筛选外,我还想加入公司的此集合(其中employee.company\u id=company.i
我遇到了以下情况。我使用Apache Felix作为OSGi服务实现,使用Apache Karaf作为OSGi容器。karaf中有一个bundle,它应该通过hibernate将一些数据保存到数据库中,但我总是得到一个SQLException:没有找到合适的驱动程序
我是mongo的新手。 我试图得到一个文档的子文档,这是我的文档: 我想得到这个子文档: 我想我需要使用这些类:http://php.net/manual/en/mongocollection.aggregate.php但我没有将它用于我的manager类实例:http://php.net/manual/en/class.mongodb-driver-manager.php. PHP手册没有说明如
我正在尝试创建一个简单的应用程序,它将我站点上每个网页的页面视图写给Cassandra。我想写每5分钟的累积页面浏览量从一个逻辑小时开始。 我的代码如下所示: 我只需要在聚合5分钟后写,而不是每次更新。有可能吗?阅读这里表明,不使用低级API,可能是不行的,我正试图避免使用低级API,因为这似乎是一个足够简单的任务,可以用更高级的API来完成。