2017-09-08 4 views
1

Je cherche un moyen de créer une vue mongodb 3.4+ en utilisant pymongo. La commande en mongo se présente comme suit:Comment créer une vue mongo en utilisant pymongo?

db.getCollection('parsed_tests').aggregate([{ 
$lookup: { 
     from: "raw_tests", 
     localField: "repository_path", 
     foreignField: "repository_path", 
     as: "raw_data" 
    } 
}]) 

Je veux le faire en python d'avoir un script d'initialisation dans une seule pièce. Est-ce que quelqu'un a réussi à faire cela?

+0

Voulez-vous créer une vue avec le pipeline que vous avez passé à '.aggregate()'? – styvane

+0

oui, c'est correct – niedakh

Répondre

1

PyMongo ne fournit pas de méthode Database pour créer une vue. Cependant, vous pouvez exécuter la commande create pour créer votre vue avec la méthode command. Si le fait createView est juste un wrapper autour de la commande create. Comme le dit sstyvane, vous devrez donner une commande de base de données explicite.

db.command({ 
    "create": "parsed_tests_view", 
    "viewOn": "parsed_tests", 
    "pipeline": pipeline 
}) 
0

Malheureusement, ils ont mal la syntaxe.

Cela a fonctionné pour moi:

db.command('create', 'parsed_and_raw_tests', viewOn='parsed_tests', pipeline=my_pipeline)

Aussi, si vous avez une instance qui mongo mise à niveau de la version 3.2 ou une version antérieure, vous need to set the feature compatibility version to 3.4 avant de pouvoir créer une vue.