J'ai un document dans mongodb avec 2 niveaux de profondeur imbriquée tableau d'objets que j'ai besoin de mettre à jour, quelque chose comme ceci:
{
id: 1,
items: [
{
id: 2,
blocks: [
{
id: 3
txt: 'hello'
}
]
}
]
}
Si il n'y a qu'un seul niveau de profondeur de tableau je pouvais utiliser l'opérateur de position pour les objets de mise à jour, mais pour le deuxième niveau de la seule option que j'ai est venu est d'utiliser l'opérateur de position avec l'objet imbriqué de l'index, comme ceci:
db.objects.update({'items.id': 2}, {'$set': {'items.$.blocks.0.txt': 'hi'}})
Cette approche fonctionne, mais il semble dangereux de moi depuis que je suis en train de construire un service web et le numéro d'index doit venir de client qui peut envoyer dire 100000 comme indice et ce sera la force de mongodb pour créer un tableau avec des indices de 100000 avec la valeur null.
Existe-il d'autres façons de mettre à jour ces objets imbriqués où je peux consulter IDENTIFIANT d'objet au lieu de sa position ou peut-être les moyens de vérifier s'il est fourni, l'index est en dehors des limites avant de l'utiliser dans la requête?