对于Mongodb是全新的我已经搜索了一个答案,并没有找到一个这个问题。我如何将不同的选项添加到聚合查询中? 我有一个谱系数据库,我想找到在特定年份培育出最多窝的繁殖者。我有一个字段“DOB”,在其他查询我能找到多少窝在2013年由“史密斯”饲养用这样的:Mongodb聚合与不同
db.ped.distinct("DOB", {$and:[{"Breeder":{$regex: /Smith/}}, {"DOB-Year":2013}]}).length
我可以用同样的饲养员用弄清楚,因为多个狗多少窝相同的出生日期应该来自同一个垃圾。 我想将此与聚合一起使用,但一直未能弄清楚查询的样子。这是我迄今为止使用的,但由于每份文件都是一只狗,因此我得到了当年育种者培育的全部狗。
db.ped.aggregate([
{$match : {"DOB-Year" : 2013}},
{$group : {_id : "$Breeder", "count" : {$sum : 1}}},
{$sort : {"count" : -1}},
{$limit : 15}
])
有没有在汇总查询使用$distinct
的方法吗?
谢谢。
针对马里奥
我不认为有相当我想要的结果。我不确定我得到的是什么,但看到我在这里。我已经清理了数据。
> db.ped.aggregate([
... {
... $match: {
... "DOB-Year": 2014
... }
... },
... {
... $group: {
... _id: {
... "Breeder": "$Breeder",
... "DOB": "$DOB"
... },
... "count": {
... $sum: 1
... }
... }
... },
... {
... $sort: {
... "count": -1
... }
... },
... {
... $limit: 1
... }
... ])
{ "_id" : { "Breeder" : "Smith", "DOB" : "09/15/2014" }, "count" : 9 }
> db.ped.distinct("DOB", {"Breeder":{$regex: /Smith/},"DOB-Year":2014}).length
5
很明显,我真正想从第一块代码应该说史密斯5。 这里是我正在使用的数据的一个例子。
{
"_id" : ObjectId("55df4a8cc0bfbb6622ae8395"),
"PedID" : 54321,
"RegNum" : "12345",
"RegName" : "My Dog Name",
"Owner" : "Smith",
"Sex" : "Dog",
"Color" : "Black & Tan",
"Sire" : "My Boy Bob",
"Dam" : "My Girl Betty",
"Breeder" : "Smith",
"DOB" : "10/18/2014",
"DOB-Year" : 2014
}
请显示一个示例文档。 –
我怀疑一些文件有一个不正确的“DOB年”。你可以执行'db.ped.find({“Breeder”:“Smith”,“DOB”:“09/15/2014”})'?你应该看到9个文件,你可以仔细检查它们吗? –
好吧,我想在理解我遇到的问题,但仍然不知道正确的方法来找到我正在寻找的结果。我正在运行的'distinct'查询查找特定年份中特定育种者有多少个“DOB”实例。综合查询是在特定年份找到最多窝的育种者。我正在寻找'aggregate'结果中'distinct'的能力。有没有办法做到这一点?谢谢。 –