multi document insert using mongoengine into mongodb multi document insert using mongoengine into mongodb python python

multi document insert using mongoengine into mongodb


Places.objects.insert doesn't take a list of dictionaries it has to be Places instances. Normal operations would be to create individual instances of Places and save or insert eg:

Places(name="test", loc=[-87, 101]).save()Places(name="test 2", loc=[-87, 101]).save()

However if you want to do a bulk insert you can pass a list of Places instances and call insert on the objects queryset eg:

Places.objects.insert([Places(name="test", loc=[-87, 101]),                        Places(name="test 2", loc=[-87, 101])])


You try to initialize Document object for multiple documents at once.If you look at mongoengine's BaseDocument class, you'll see, that its __init__ method takes a dictionary of keyword arguments, which relate to fields of one single document.

If you want to do a bulk save, you have to make a list of places instances and pass it to insert() method.

a = []a.append(places(**{"name": 'test', "loc": [-87,101]}))a.append(places(**{"name": 'test', "loc": [-88,101]}))x = places.objects.insert(a)