recherche

Maison  >  Questions et réponses  >  le corps du texte

node.js - Comment mettre à jour par lots un ensemble de données dans Mongo et effectuer une opération d'insertion lorsque les données du tableau n'existent pas?

Par exemple, j'ai une table de balises en mongo, et le modèle de données est le suivant

    {
        name: String,
        hot: {
            type: Number,
            default: 0
        },
        create_at: {
            type: Date,
            default: Date.now
        }
    }

Maintenant, j'ai un tableau de noms de balises, tels que ['mongoDB', 'node.js', 'mysql'],
Je souhaite mettre à jour la popularité par lots, et s'il s'avère qu'une telle balise n'existe pas, insérez-le, implémentez quelque chose comme

mongo.tags.update({
    name:{
        $in:['mongoDB','node.js','mysql']
        }
},{
    $inc:{
        hot:1
    }
},{
    upsert: true,
    multi:true
})

Une telle opération, mais maintenant, lorsque j'exécute cette commande, des données vides sont ajoutées

La façon dont je l'implémente maintenant est de faire d'abord une requête, de mettre à jour celles qui peuvent être interrogées et d'insérer celles qui ne peut pas être interrogé, mais une telle opération nécessite de parcourir le tableau de balises plusieurs fois à partir du code, et les performances ne sont pas bonnes. Je voudrais demander si des experts ont une meilleure solution.

淡淡烟草味淡淡烟草味2765 Il y a quelques jours1011

répondre à tous(2)je répondrai

  • ringa_lee

    ringa_lee2017-05-24 11:37:41

    1. Votre relevé d'opération de mise à jour est OK ;

    2. Ce que vous avez dit à propos de l'ajout de données vides est dû au fait qu'aucun document répondant aux conditions n'a été trouvé et que upsert a été défini sur true, donc un document contenant un champ chaud a été inséré.

    Autant vérifier l'état des documents de votre collection et réessayer. Aucun problème n'a été détecté lors de votre opération de mise à jour.

    Pour référence.

    J'adore MongoDB ! Amusez-vous!


    La conférence du groupe d'utilisateurs de la communauté chinoise MongoDB 2017 à Pékin arrive bientôt ! Scannez le code QR pour vous inscrire !

    répondre
    0
  • 某草草

    某草草2017-05-24 11:37:41

    Il devrait être possible d'utiliser upsert dans mongodb
    upsert({},{},true) true signifie écrire s'il n'y en a pas, et mettre à jour s'il y en a
    Vous pouvez vous référer au forum d'assistance officiel :
    http:// ; forum.foxera.com/mongo...

    répondre
    0
  • Annulerrépondre