Wenn ich den obigen Code ausführen, erhalte ich den folgenden Fehler.
name: 'MongoError',
message: 'Cannot apply $pull to a non-array value',
ok: 0,
errmsg: 'Cannot apply $pull to a non-array value',
code: 16837,
Unten ist mein MongoDB-Objekt.
{
"_id" : ObjectId("593270b8bc98ea235cfaf68f"),
"username" : "[email protected]",
"roleId" : 3,
"userId" : ObjectId("593270b8bc98ea235cfaf68e"),
"profile" : {
"firstName" : "Hisham",
"lastName" : "Mubarak"
},
"activeFlag" : 1,
"authType" : [
"facebook"
],
"emailVerified" : false,
"emailVerificationHistory" : [
{
"email" : "[email protected]",
"verifyCode" : "59327155480b791b7845dfd7",
"requestDate" : ISODate("2017-06-03T08:20:37.156Z"),
"verifiedDate" : ISODate("2017-06-03T10:31:53.720Z")
}
]
}
Wie suche ich durch die emailVerificationHistory Array verifyCode verwenden und die verifyCode entfernen nur aus diesem ersten Objekt innerhalb Array? Danke im Voraus für Ihre Hilfe.
Danke für den Tipp. Das Ändern des $ Pulls in $ Unset hat mir geholfen, das zu bekommen, was ich wollte. –
@HishamMubarak Eigentlich wird '$ unset' das Array-Element nur durch' null' ersetzen. Wenn Sie es entfernen müssen, verwenden Sie tatsächlich $ Pull. Wenn Sie "nur eine von vielen Übereinstimmungen" löschen möchten, dann "$ unset" und dann "$ pull" als zwei Operationen. Ihr Wert sollte jedoch "einzigartig" sein, also sollten Sie '$ pull' verwenden. –