multi document insert using mongoengine into mongodb

后端 未结 2 1252
深忆病人
深忆病人 2021-01-07 18:31

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

         


        
相关标签:
2条回答
  • 2021-01-07 19:06

    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])])
    
    0 讨论(0)
  • 2021-01-07 19:12

    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)
    
    0 讨论(0)
提交回复
热议问题