Dies ist die Struktur eines Dokuments, das ich in einer Monggodb-Sammlung habe. Ich wollte verstehen, wie man ein Mongo-Aggregat von gruppierten zählen über Schlüssel "Code" und die Indexposition in der verschachtelten JSON (nicht die Priorität, wie es eine beliebige Zahl sein kann, aber in verschachtelten Zeitpläne kann nur 5 Werte sein):gruppierte Anzahl mit einer Spalte und Indexposition mongodb
{
"_id" : ObjectId("5749e9fde4b0064e7362b560"),
"_class" : "com.weirdcompanyname.core.collectionname",
"rfId" : 1,
"scheduleds" : [
{
"code" : "556e4835f1eae40bdfa2f2001f2afc76",
"type" : "HT",
"priority" : 0
},
{
"code" : "8b2ab67af4f60e42f7ea64813b5795cf",
"type" : "HT",
"priority" : 1
},
{
"code" : "ed17101eb918b4d8c7c598e4884523ea",
"type" : "HT",
"priority" : 2
},
{
"code" : "7e0ffb4db",
"type" : "QZ",
"priority" : 3
},
{
"code" : "1453dfa1794f39b05f0259ad04699073",
"type" : "HT",
"priority" : 4
}
],
"created" : ISODate("2016-05-28T18:57:00.878Z")
}
Das Ergebnis, das ich zu finden bin versucht:
code index_position count
556e4835f1eae40bdfa2f2001f2afc76 0 100
8b2ab67af4f60e42f7ea64813b5795cf 1 100
ed17101eb918b4d8c7c598e4884523ea 2 100
7e0ffb4db 3 100
1453dfa1794f39b05f0259ad04699073 4 100
ich meinen Kopf bekommen konnte die verschachtelte json in einzelnen Arrays um das Abwickeln und dann den Code über Code Gruppierung und vielleicht andere Spalte, lassen Sie uns sag Priorität und habe die Anzahl, aber das Problem ist, die Indexposition zu bekommen.
Ist das sogar machbar auf Mongo, ich habe eine Menge Zeug darüber gelesen und ich dachte, wenn ich Wert habe, für den ich eine Position brauche, dann kann es machbar sein, aber ich habe nicht wirklich einen Wert dafür Suchen Sie nach, was ich suche ist jeder Code und seine Indexposition in den "geplanten" und zählen. Dies ist, was ich mit meiner begrenzten Mongo Abfrage Fähigkeiten tun könnte:
db.collectionname.aggregate([{'$match':{'date_key':{'$gte': yesterday_beginning, '$lte': yesterday_end}}}, {'$unwind':'$scheduleds'}, {'$group':{'_id':{'code':'$scheduleds.code','priority':'$scheduleds.priority'}, 'rfid':{'$addToSet':'$rfId'}}}, {'$project':{'_id':0, 'code':'$_id.code', 'priority':'$_id.priority', 'totalRfid':{'$size':'$rfid'}}}, { $limit : 1000 }],{ allowDiskUse:true})