Mangouste suppression (pull) un document au sein d'un tableau, ne fonctionne pas avec ObjectID
J'ai le texte suivant mangouste schéma:
user = {
"userId" : "myId",
"connections":
[{
"dateConnectedUnix": 1334567891,
"isActive": true
}, {
"dateConnectedUnix": 1334567893,
"isActive": false
}]
}
Je voudrais supprimer le deuxième élément dans la connections
tableau, pour obtenir le suivant:
user = {
"userId" : "myId",
"connections":
[{
"dateConnectedUnix": 1334567893,
"isActive": false
}]
}
Le code suivant fait le travail comme prévu:
userAccounts.update({'connections.isActive': false },
{$pull: { 'connections.isActive':false }},
function (err,val) {
console.log(val)
});
Mais, j'ai besoin de supprimer basé sur ObjectId. Et la suite va ne fonctionne pas:
userAccounts.update({'connections._id': '1234-someId-6789' },
{$pull: { 'connections._id': '1234-someId-6789' }},
function (err,val) {
console.log(val)
});
Des suggestions? J'ai été frapper ma tête contre l'écran (aka Google, Stackoverflow, ...) pendant des heures et n'ont eu aucune chance.
- Quelqu'un peut m'aider ici: stackoverflow.com/questions/49124014/... le même problème 🙁
Vous devez vous connecter pour publier un commentaire.
Il semble que le code ci-dessus ne fonctionnerait pas. Il ne devrait même pas avoir travaillé pour le premier exemple que j'ai donné.
À la fin, j'ai été pris en charge par cette réponse ici: MongoDB, retirer l'objet à partir de la matrice de
Voici mon code de travail:
connId
etusr.userId
est un instanceofObjectId
?safe: true
a été définie par défaut?J'ai un document comme
Je dois supprimer l'adresse de l'adresse de tableau
Après avoir cherché beaucoup sur internet, j'ai trouvé la solution
addressId
À utiliser mise à jour avec ObjectId, vous devez utiliser ObjectId objet au lieu de représentation de chaîne :
connections_.id
alors qu'en fait, la question d'origine montre clairement queconnections
est un tableau d'objets sans_id
de propriété attaché à elle.mangouste: 4.11.11
Ce qui ont travaillé pour moi, c'est la syntaxe suivante:
Mangouste soutien de l'id dans un format de chaîne ou ObjectId format.
Astuce:
new ObjectId(stringId)
pour changer de chaîne à ObjectIdVous pouvez le faire dans
mongoose 5.4.x
La
item
deconnections
tableau sera retiré sur la base fournis propriété_id
valeurSupprimer un seul post de postes tableau
user.posts.pull("5cd07ee05c08f51af8d23b64");
user.save();