2017-09-22 10 views
0

J'essaye de créer une base de données si elle n'est pas là déjà dans mongo, puis crée une collection dans la base de données; puis insérez/mettez à jour un document (qui contient deux clés, appelées erp et dataset dont la valeur est une liste de chaînes) dans la collection. Je sais comment upsert un document comme,pymongo - comment ajouter des valeurs à un tableau?

self.connection = pymongo.MongoClient(host=db_host, port=db_port) 
self.connection.datasets.datasets.update_one({'erp': 'erp1'}, 
              {'$set': {'data_set': ['database1']}}, 
              upsert=True) 

Lorsque le document est inséré dans mongo pour la 1ère fois, créez une liste avec chaîne (s) sous forme de valeurs pour le champ « data_set », mais comment maintenir/mettre à jour la liste des chaînes qui chaque fois qu'une nouvelle chaîne entre, ajoutez simplement la liste existante pour data_set.

MISE À JOUR. La requête de travail

connection.erp_datasets.erp_datasets.update_one({'erp_name': 'erp1'}, 
               {'$push': {'data_set': 'database1'}}, upsert=True) 

Répondre

1

Je pense que ce que vous êtes à la recherche d'un opérateur de mise à jour $push.

L'opérateur $ push ajoute une valeur spécifiée à un tableau.

self.connection.datasets.datasets.update_one(
    {'erp': 'erp1'}, 
    {'$push': {'data_set': 'database1'}} 
)