【问题标题】:Scala, casbah aggregate queryScala,casbah 聚合查询
【发布时间】:2016-10-03 11:27:06
【问题描述】:
我是 MongoDB 和 Casbah 的新手,我想知道是否有人可以帮助我。
我有以下有效的 mongoDB 查询,
db.getCollection('holidayRequests').aggregate
(
[
{ $match: { $and: [ { email: "leeroy.jenkins@company.com" } , { status: "APPROVED" } ] }},
{
$group:
{
_id: { email: "$email" },
totalAmount: { $sum: "$daysTaken" }
}
}
]
);
如何将其转换为 casbah 驱动程序可以理解的查询?
【问题讨论】:
标签:
mongodb
scala
aggregation-framework
casbah
mongodb-aggregation
【解决方案1】:
类似的东西:
import com.mongodb.casbah.commons.MongoDBObject
import com.mongodb.casbah.commons.MongoDBList
import com.mongodb.casbah.MongoClient
object testCasbah {
val mongoClient = MongoClient() /* database connections parameters */
val db = mongoClient("databaseName")
val email = MongoDBObject("email" -> "leeroy.jenkins@company.com")
val status = MongoDBObject("status" -> "APPROVED" )
val and = MongoDBObject("$and" -> List(email, status))
val pipeline = MongoDBList(MongoDBObject("$match" -> and)) ++
MongoDBList(MongoDBObject("$group" ->
MongoDBObject("_id" -> MongoDBObject("email" -> "$email"),
"totalAmount" -> MongoDBObject("$sum" -> "$daysTaken"))))
db.command(MongoDBObject("aggregate" -> "holidayRequests", "pipeline" -> pipeline))
}
应该可以。