12
votes

Insérer à l'index spécifique pour la matrice Mongo

Mongo prend en charge des tableaux de documents à l'intérieur des documents. Par exemple, quelque chose comme xxx

maintenant, imaginez que je voulais insérer une valeur arbitraire à un indice arbitraire xxx

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.


0 commentaires

5 Réponses :


0
votes

Concernant votre commentaire:

Eh bien .. Avec des utilisateurs simultanés, cela va être problématique avec n'importe quelle base de données ...

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.


0 commentaires

1
votes

Ce qui suit fera le truc: xxx

si l'insertion 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" , il suffit d'ajouter un pour () boucle avant le item.coll = Affectation à la recherche de l'insertion (et à ajouter 1 à celle-ci, puisque vous souhaitez l'insérer après nom = "foo" .


0 commentaires

18
votes

Commencer avec Version 2.6 Strong> Vous pouvez enfin faire cela. Vous devez utiliser $ Position opérateur. Pour votre exemple particulier:

db.students.update(
  { _id: 10},
  { $push: {
     coll: {
       $each: [ {name: 'new val'} ],
       $position: 1
     }
  }}
)


0 commentaires

0
votes

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 : xxx


0 commentaires