對於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'的能力。有沒有辦法做到這一點?謝謝。 –