ich eine Sammlung in MongoDB haben, die wie folgt lautet:
{
"_id" : "5327010328645530500",
"members" : [
{
"participationCoeff" : 1,
"tweetID" : "5327010328645530500"
},
{
"participationCoeff" : 1,
"tweetID" : "2820402625046999289"
},
{
"participationCoeff" : 0.6666666666666666,
"tweetID" : "6122060484520699114"
},
{
"participationCoeff" : 1,
"tweetID" : "4656669980325872747"
}
]
}
{
"_id" : "2646953848367646922",
"members" : [
{
"participationCoeff" : 1,
"tweetID" : "2646953848367646922"
},
{
"participationCoeff" : 0.75,
"tweetID" : "7750833069621794130"
},
{
"participationCoeff" : 0.5,
"tweetID" : "6271782334664128453"
}
]
}
Grundsätzlich haben Sammlung Cluster, wo ein Cluster ein _id
Feld und ein members
Feld hat. Mitgliederfeld ist ein Array von Dokumenten mit folgendem Format.
{
"participationCoeff" : 1,
"tweetID" : "5327010328645530500"
}
Jetzt von Zeit zu Zeit, ich habe diese Unter Dokumente löschen Mitglieder des Cluster-Dokumentattribut, durch tweetID entsprechen.
Ich bin jedoch nicht in der Lage, eine Abfrage zu finden, um diesen Effekt zu erzielen. Grundsätzlich wird eine tweetID an vielen Clustern teilnehmen und daher in mehreren Unterdokumenten des 'members'-Attributs verschiedener Cluster erscheinen. Ich möchte eine Bulk $ pull-Operation bereitstellen, in der ich alle Unterdokumente in allen Clustern (d. H. Ihr Attribut "members") entfernen kann, die mit einer bestimmten tweetID übereinstimmen.
Einige Hilfe und Intuition werden sehr hilfreich sein.
erhalten folgenden Fehler. '$ pull/$ pullAll-Modifizierer kann nicht auf Nicht-Array angewendet werden. – VaidAbhishek
@VaidAbhishek Das bedeutet, dass Sie einige Dokumente in der Sammlung haben, in denen' members' kein Array ist. – JohnnyHK
Ich denke nicht, dass das bei meiner Sammlung der Fall ist. Mitglieder sind ein streng Array-Typ-Attribut des Clusters. Gibt es eine Möglichkeit, dies mit Aggregation zu tun! – VaidAbhishek