Multi Document Insert Using Mongoengine Into Mongodb
In my flask app I am using MongoeEgine. I am trying to insert multiple documents into my places collection in my MongoDB. My document class is defined as class places(db.Document)
Solution 1:
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])])
Solution 2:
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)
Post a Comment for "Multi Document Insert Using Mongoengine Into Mongodb"