Le problème du nombre incertain d'éléments d'exécution dans MongoDB
为情所困
为情所困 2017-05-17 10:01:33
0
1
736
var all = db.getCollection('logging').find({"Properties.EnterpriseId":{$ne:null},"Properties.AccountId":null}).sort({"Date":-1});
all.forEach(
    function(value,index,arr){
       if(value.Properties.AccountId == null){
           db.logging.update({'_id':ObjectId(value._id.str)},{$set:{'Properties.AccountId':value.Properties.EnterpriseId}}, false, true)
       }
    }
);

Le code ci-dessus ne met à jour que 100 éléments à la fois, parfois seulement quelques centaines d'éléments sont mis à jour et 200 000 éléments de données ne peuvent pas être mis à jour en même temps. Pourquoi ?

为情所困
为情所困

répondre à tous(1)
左手右手慢动作

Il y a quelques choses que je ne comprends pas très bien :

  1. On dirait un script shell, n'est-ce pas ?

  2. Puisqu'il y a {"Properties.AccountId":null} dans la condition, pourquoi avons-nous besoin de if(value.Properties.AccountId == null) ? Ou ce que vous voulez juger est AccountId === null ?{"Properties.AccountId":null},为什么还要if(value.Properties.AccountId == null)?或者你想判断的是AccountId === null?

  3. update方法的详细说明可以查看文档。文档中的定义是:db.collection.update(query, update, options),所以不知道最后的falsetrue本意是想查什么?upsertmulti?这样的话应该是:

    db.logging.update({'_id':ObjectId(value._id.str)},{$set:{'Properties.AccountId':value.Properties.EnterpriseId}}, {upsert: false, multi: true})

    不过你用的是_id条件应该也没有multi

  4. La description détaillée de la méthode update se trouve dans la documentation. La définition dans le document est : db.collection.update(query, update, options), donc je ne sais pas quels sont les derniers false et true signifie Que voulez-vous vérifier ? upsert et multi ? Dans ce cas, cela devrait être :

    rrreee

    Mais si vous utilisez la condition _id, cela ne devrait rien avoir à voir avec multi. Eh bien, il vaut mieux énoncer clairement votre intention initiale, donc je ne devinerai pas.
🎜🎜Vous utilisez une mise à jour en boucle et chaque boucle a des conditions Si vous souhaitez mettre à jour 200 000 éléments de données, ces conditions peuvent-elles couvrir l'ensemble des 200 000 éléments de données ? 🎜🎜 🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!