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?
淡淡烟草味
淡淡烟草味 2017-05-24 11:35:41
0
2
985

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.

淡淡烟草味
淡淡烟草味

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

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 !

某草草

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...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal