В моем приложении для флэков я использую MongoeEgine. Я пытаюсь вставить несколько документов в свою коллекцию мест в моем MongoDB.multi document insert использование mongoengine to mongodb
Мой класс документ определен как
class places(db.Document):
name = db.StringField(max_length=200, required=True)
loc = db.GeoPointField(required=True)
def __unicode__(self):
return self.name
a=[]
a.append({"name" : 'test' , "loc":[-87,101]})
a.append({"name" : 'test' , "loc":[-88,101]})
x= places(a)
Последнее утверждение не может
x= places(a)
TypeError: __init__() takes exactly 1 argument (2 given)
Я также попытался сохранить это мой экземпляр
places.insert(x)
places.save(x)
как неудачу. Пожалуйста помоги.
Спасибо. Как я могу использовать это, чтобы сделать upsert. Я хочу вставить эти строки, если они новые, иначе обновите существующую строку. Есть ли объект Places.objects.upsert или Places.object.insert с upsert = True? – user1340513
@ Ross есть какой-то простой способ избежать * NotUniqueError *? Я где-то читал об использовании * заказанного * в объемной вставки PyMongo, но я бы предпочел использовать Mongoengine. Я знаю _getCollection(), но все же я предпочел бы избежать прямого доступа к коллекции. Я предпочитаю использовать синтаксис Mongoengine :) – giliev
@Ross Какая из приведенных выше операций является эффективной, я имею в виду, является ли операция save() или объемной вставкой. – hkhr