2017-01-09 3 views
0

대량으로 문서를 삽입하려고하는데 컬렉션에 고유 색인을 만들었으므로 대량 삽입을 수행하는 동안 중복 된 문서를 건너 뛰고 싶습니다. 이것은 기본 mongodb 기능을 수행 할 수 있습니다mongoengine에서 order false로 대량 삽입하는 방법

나는 누군가가 이것을 달성하는 방법을 알고있는 경우, mongoengine으로이 작업을 수행 할
db.collection.insert(
    <document or array of documents>, 
    { 
     ordered: <boolean> 
    } 
) 

, 감사합니다 질문에 대답하십시오.

+0

https://docs.mongodb.com/manual/reference/method/Bulk.insert/ – sidgate

+0

'mongoengine'에서 어떻게합니까? –

답변

1

이 같은 클래스가있는 경우 : Foo 인스턴스 foos=[Foo('a'), Foo('a'), Foo('a')]Foo.objects.insert(foos) 시도와

class Foo(db.Document): 
    bar= db.StringField()  
    meta = {'indexes': [{'fields': ['bar'], 'unique': True}]} 

그리고 갖는 목록을 당신은 mongoengine.errors.NotUniqueError

하여 MongoDB에서 인덱스를 삭제 될 수

1 woraround 삽입 중복을 얻을 것이다 보다 확실한 색인을 {unique : true, dropDups : true}

두 번째 해결 방법은 기본 pymongo API를 사용하는 것입니다. 대량 작업 : https://docs.mongodb.com/manual/reference/method/db.collection.initializeOrderedBulkOp/#db.collection.initializeOrderedBulkOp

관련 문제