Apakah mungkin menggunakan Variabel untuk nama koleksi menggunakan pymongo? Misalnya:
col = 'my_collection'
db.col.update()
Apakah mungkin menggunakan Variabel untuk nama koleksi menggunakan pymongo? Misalnya:
col = 'my_collection'
db.col.update()
Anda dapat gunakan:
col = 'my_collection'
db[col].update()
Anda mencoba memanggil metode dari sebuah string. Ini tidak spesifik untuk pymongo.
Anda dapat menggunakan getattr untuk melihat apakah string tersebut ada sebagai atribut pada objek db
Anda, lalu panggil saja.
e.g.
my_collection = getattr(col, 'my_collection')
my_collection.update()
sunting: Perhatikan bahwa menggunakan pendekatan getattr memungkinkan penanganan pengecualian jika string bukan merupakan metode atau atribut col
.
Jawaban Ashoka Lella sempurna. Salah satu tambahannya adalah dengan menyertakan pernyataan ini di kelas model labu Anda.
__collection__="default" #Any default collection, which may or may not be used by the application
Hanya karena koleksi Anda ada dalam variabel, bukan berarti Anda bisa melewatkan definisi atribut koleksi. Saya menempelkan kode saya di bawah tempat saya menggunakan cara ini.
class Collection(Document):
__collection__ = "collection_1"
structure = {
"name": str,
"email": str,
"status": bool,
"extra": dict
}
required_fields = ["name", "email"]
default_values = {"status": "inactive", "extra": {}}
def insertDocument(self, data):
print "model : " + data["collection"]
db[data["collection"]].insert(data["data"])
return "from model"
Jangan lupa untuk mendaftarkan nama kelas Anda pada variabel db - db.register([Collection])