كيف أحصل على معرف كائن بعد استمراره في بيموونغو؟

StackOverflow https://stackoverflow.com/questions/3089067

  •  28-09-2019
  •  | 
  •  

سؤال

لدي سؤال مبتدئ في Pymongo: إذا collection هو pymongo مجموعة وأنا أستخدمه لحفظ كائن

obj = {'foo': 'bar'}
collection.insert(obj)

ثم يقوم MongoDB تلقائيًا بإنشاء _id حقل ل obj; ؛ مرة واحدة يمكن أن تؤكد هذا مع

print obj

الذي يعطي شيئًا مثل

{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}

سؤالي هو: كيف يمكنني الحصول على ذلك _id ارجع بطريقة يمكنني استخدامها؟

على سبيل المثال ، إذا أردت حذف obj من قاعدة البيانات ، أعتقد أنني أريد أن أفعل شيئًا مثل

collection.remove(obj['_id'])

لكن عندما أحاول ذلك ، أحصل على الرسالة

TypeError: 'ObjectId' object is unsubscriptable.

ماذا يحدث هنا؟

هل كانت مفيدة؟

المحلول

إدراج إرجاع _ID من المستند المدرج.

وسيتم إزالة الإزالة بناءً على _id ، لذا جرب شيئًا مثل:

doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)

نصائح أخرى

تحتاج فقط لتمرير remove قولون ، تماما كما فعلت insert. لذلك ، لإزالة وثيقة بناء على _id القيمة ، افعل شيئًا مثل:

collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})

يمكنك فقط المرور obj.

لإزالة كائن من المستند ، يجب أن تذكر الشرط حيث يمكنك تحديد "_id" لمستند ........

_id = db.test.insert({"foo": "test"})
db.test.remove({"_id":_id})
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top