2015-10-05 13 views
5

Wydaje mi się, że borykam się, aby znaleźć właściwy sposób usunięcia dokumentu. To znaczy. powinienem używać na przykład remove() lub delete_one(), a także jaka jest kanoniczna metoda usuwania przez id, która jest string.Usuwanie dokumentu z PyMongo z id

tj. powinienem używać następującego:

mongo.db.xxx.delete_one({'_id': { "$oid" : str(_id) } }) 

czy mogę użyć innego formatu?

mongo.db.xxx.remove({'_id': { "$oid" : str(_id) } }) 
mongo.db.xxx.remove({'_id': ObjectId(_id) }) 

Co to jest forma kanoniczna?

Odpowiedz

15

remove jest przestarzałe w wersji 3.x pymongo, więc obecna forma kanoniczna byłoby użyć delete_one:

from bson.objectid import ObjectId 

result = mongo.db.xxx.delete_one({'_id': ObjectId(_id)}) 

Wywołanie zwraca DeleteResult w którym można kontrolować pole deleted_count aby sprawdzić, czy znalazłem dokument do usunięcia

+0

Dzięki, znasz wyjątki błędu? W tej chwili nie mogę uzyskać debugowania. To znaczy. jeśli identyfikator nie zostanie znaleziony. – disruptive

+0

Kiedy próbuję tego w wierszu poleceń, otrzymuję następujące polecenie: 'NameError: name 'ObjectId' nie jest zdefiniowany' – disruptive

+0

@Navonod Musisz zaimportować, jeśli jeszcze tego nie robisz. Zobacz zaktualizowaną odpowiedź. – JohnnyHK

Powiązane problemy