db.props.aggregate([{"$match":{release:"1"}},{"$project":{'_id':0, 'SHK.0':{"$filter":{"input":'$SHK.0.host',"as":'fil', "cond":{$in:['$$fil.Tags',"cd"]}}}}}])
verwenden ich das über meinen Dataset unter ::Wie wird ein Schlüsselwert in Mongodb basierend auf dem Tagnamen in einem tief verschachtelten Dokument gesucht?
{ "_id" : ObjectId("5a0eafdf481fc70d171521b1"),
"release" : "1",
"product" : "1",
"project" : "1",
"patchset" : "1",
"common" : {
"active" : "YES",
"javahome" : "path" },
"SHK" : [
{
"host" : {
"value" : "demo",
"Tags" : [ "ci", "cd" ] },
"appserver" : {
"value" : "demo",
"Tags" : [ "ci" ] },
"appname" : {
"value" : "demo",
"Tags" : [ "cd" ] } } ] }
Aber die oben scheint nicht erhalte ich eine leere Index zu arbeiten ... Ich versuche, hier bestimmten Schlüsselwert aufgelistet abzufragen, um zu erhalten pair gemäß dem Tag-Namen vorhanden annehmen in der obigen Abfrage, wie ich cd erwähnt habe, ich sollte Wert für nur Host und appname erhalten und appserver sollte nicht im Endergebnis aufgeführt werden, da es den Tagname cd nicht enthält. Dank
Das funktioniert gut, nicht genau die Ausgabe wollte ich aber gab mir, wenn Ein bestimmter Schlüssel enthält diesen Tag oder nicht, den ich dann programmatisch verglichen und die Schlüssel gelöscht habe, wo diese Tags nicht vorhanden waren. Vielen Dank –