Mongo prend en charge des tableaux de documents à l'intérieur des documents. Par exemple, quelque chose comme maintenant, imaginez que je voulais insérer une valeur arbitraire à un indice arbitraire P> Je sais que vous pouvez mettre à jour Les valeurs en place avec $ et $ ensemble, mais rien d'insertion. Il est en quelque sorte nulle de devoir remplacer l'ensemble de la matrice juste pour insérer à un index spécifique. P> P>
5 Réponses :
Concernant votre commentaire: P>
Eh bien .. Avec des utilisateurs simultanés, cela va être problématique avec n'importe quelle base de données ... p>
Ce que je ferais, c'est ce qui suit: Ajouter un dernier horodatage modifié au document. Chargez le document, laissez l'utilisateur la modifier et utiliser la timStamp en tant que filtre lorsque vous mettez à jour le document et mettez également à jour l'horodatage en une étape. Si elle met à jour 0 documents, vous savez qu'il a été modifié entre-temps et vous pouvez demander à l'utilisateur de le recharger. p>
Ce qui suit fera le truc: si l'insertion code> est variable (c'est-à-dire que vous ne savez pas exactement où vous souhaitez l'insérer, mais Vous savez que vous voulez l'insérer après l'élément avec nom = "foo" code>, il suffit d'ajouter un pour () code> boucle avant le item.coll = code > Affectation à la recherche de l'insertion (et à ajouter 1 à celle-ci, puisque vous souhaitez l'insérer après nom = "foo" code>. p> p>
Commencer avec db.students.update(
{ _id: 10},
{ $push: {
coll: {
$each: [ {name: 'new val'} ],
$position: 1
}
}}
)
Utilisation de l'opérateur $ Position Ceci peut être effectué à partir de la version 2.5.3.
Il doit être utilisé avec le $ chaque opérateur. De La documentation : p>
Réponse pratique (non sélectionnée, mais la mieux notée) de cet article similaire:
Pouvez-vous avoir Mongo $ Push Push Prevend au lieu d'ajouter? a > utilise $ défini pour insérer 3 à la première position dans une matrice, appelée "tableau". Échantillon de la réponse associée par Sergey Nikitine: P> db.test.update({"_id" : ObjectId("513ad0f8afdfe1e6736e49eb")},
{'$set': {'array.-1': 3}})