Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    juin 2003
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 1 057
    Points : 411
    Points
    411

    Par défaut [MongoDB] Nettoyage de collection

    Bonjour,

    J'ai une MongoDB Azure qui possède plus de 2 GO de datas et ça commence à être long à requêter (et cher).

    J'aimerais pouvoir faire du ménage car les messages les plus anciens ne servent pas.
    J'ai un champ timestamp et un champ device_properties.deveui.
    L'idéal serait de pouvoir ne garder que les derniers device_properties.deveui reçus.
    Mais avant de pouvoir faire cette requête un peu compliquée, je voulais m'assurer que je pouvais supprimer des datas simplement.

    J'ai donc tenté plusieurs méthode et je ne rencontre que des difficultés.
    Voici quelques uns de mes tests:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    db.maColl.remove( { timestamp : {"$lt" : new Date(2019, 1, 1) } })
    db.maColl.remove( { timestamp : {"$lt" : new ISODate('2018-01-01T08:15:31Z') }})
    db.maColl.remove({'timestamp':/2018-12/})
    db.coll.createIndex({"_ts":1}, {expireAfterSeconds: 10})
    Et en fonction de la commande et de l'outil que j'utilise, j'ai des fois :
    - Command invalid or not supported
    - Request rate is large
    - Cannot use 'commands' readMode, degrading to 'legacy' mode
    Ou alors ça passe mais ça n'a aucun impact.

    J'ai utilisé RoboMongo, l'outil web script ou Shell de Azure, j'ai des comportement différent selon l'outil. Lequel est le mieux ?
    David.

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 336
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 336
    Points : 2 354
    Points
    2 354

    Par défaut

    Je dirais une ligne de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.maColl.remove( { timestamp : {"$lt" : new ISODate('2018-01-01T08:15:31Z') }})
    et ce qu'on doit mettre au premier temps pour tester.

    Mais comme elle a échoué, je dirais ce qu'on doit faire c'est de vérifier et de noter les versions mongodb de client (>mongo --version) et de serveur (>db.version()). L'idéal est qu'elles soient la même ou de voisinage. Sinon, essayez de charger un client de version en concordance avec le serveur. Je peux proposer un jira d'un sujet de ce type (pas forcément le même problème, c'est vrai):
    https://jira.mongodb.org/browse/SERVER-20915

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/04/2018, 17h56
  2. Réponses: 3
    Dernier message: 05/05/2017, 10h41
  3. Réponses: 0
    Dernier message: 09/09/2016, 13h04
  4. [mongodb] structure de collection
    Par mathspountz dans le forum NoSQL
    Réponses: 0
    Dernier message: 14/04/2016, 12h21
  5. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo