MongoDB कंसोल में _id द्वारा निकालें


137

MongoDB कंसोल में मैं आईडी द्वारा रिकॉर्ड कैसे निकाल सकता हूं? यहाँ मेरा संग्रह है:

[ 
  {
     "_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },
     "name" : "Gazza"
  },
  {
     "_id" : { "$oid" : "4d513345cc9374271b02ec6c" },
     "name" : "Dave",
     "adminOf" : { },
     "email" : "email@email.com"
  }
]

और यहाँ आज्ञा है कि मैंने कोशिश की है कि काम न करें:

db.test_users.remove( {"_id":{"$oid":new ObjectId("4d512b45cc9374271b02ec4f")}});
db.test_users.remove( {"_id":{"$oid":"4d513345cc9374271b02ec6c"}});
db.test_users.remove( {"_id":"4d512b45cc9374271b02ec4f"});
db.test_users.remove( {"_id":new ObjectId("4d512b45cc9374271b02ec4f")});

नाम कार्यों द्वारा हटाना:

db.test_users.remove( {"name":"Gazza"});

यदि यह कोई अंतर करता है तो यह mongodb.org पर ब्राउज़र शेल में है

धन्यवाद


मेरे द्वारा कॉलबैक जोड़े जाने तक मेरे लिए किसी भी समाधान ने काम नहीं किया: db.test_users.remove ({"_id": '4d512b45cc9374271b02ec4f'}, function (इरेट, डेटा) {});
रटमैक्स

जवाबों:


272

बहुत करीब। यह काम करेगा:

db.test_users.deleteOne( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});

यानी आपको ObjectId के लिए एक नए की आवश्यकता नहीं है ।

इसके अलावा, कृपया ध्यान दें कि कुछ ड्राइवरों / उपकरण में, remove()अब पदावनत है और deleteOneया deleteManyबजाय प्रयोग किया जाना चाहिए।


4
यह _id db.test_users.remove ({_id: ObjectId ("4d512b45cc9374271b02ec4f")} के आसपास के उद्धरणों के बिना भी काम करेगा;
अल्फोंसोडेव

मैंने यह कोशिश की: TimeAndSpace.remove ({"_id": ObjectId ("8Bd2dZ778LXejYNrL")}); ... और मुझे मिल गया, "अनट्रेडेड रेफ़रेंस: ऑब्जेक्टआईड को <गुमनाम>: 2: 13" में परिभाषित नहीं किया गया है
बी क्ले शैनन

@BClay ऑब्जेक्ट आईडी से हेक्साडेसिमल इनपुट (शायद लोअरकेस) की उम्मीद है, इसलिए यह दूसरों के बीच एक्स, जेड वर्णों पर विफल हो रहा है।
निक कॉट्रेल

2
यह _reidiculous है।
गय

यदि _idफ़ील्ड स्वचालित रूप से उत्पन्न नहीं होती है (यानी यह एक ऑब्जेक्टआईड नहीं है, लेकिन एक स्ट्रिंग है), तो आप केवल _idउद्धरण चिह्नों के मूल्य लिख सकते हैं db.your.database.remove({"_id": "your value"}):।
अलेक्जेंडर

16

इसका उत्तर यह है कि mongodb.org पर वेब कंसोल / शेल अलग तरह से व्यवहार करता है, न कि जैसा मैंने उससे उम्मीद की थी। घर पर स्थापित संस्करण समस्या के बिना पूरी तरह से काम करता है; वेब शेल पर ऑटो उत्पन्न _id को इस तरह बचाया गया था:

"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" },

घर पर एक ही दस्तावेज़ सेटअप और ऑटो उत्पन्न _id को इस तरह बचाया गया था:

"_id" : ObjectId("4d5192665777000000005490")

प्रश्न समस्या के बिना उत्तरार्द्ध के खिलाफ काम करते थे।


1
क्या आप सुनिश्चित हैं कि वे दस्तावेज़ BSON में अलग तरह से सहेजे गए हैं? उन अंतरों की तरह लग रहा है कि यह ग्राहक सिर्फ उत्पादन अलग स्वरूपण है।
निक कॉट्रेल

13

खैर, _id आपके उदाहरण में एक ऑब्जेक्ट है, इसलिए आपको बस एक ऑब्जेक्ट पास करने की आवश्यकता है

'db.test_users.remove({"_id": { "$oid" : "4d513345cc9374271b02ec6c" }})'

यह काम करना चाहिए

संपादित करें: यह सुनिश्चित करने के लिए कि इसे संकलित किया गया है, अनुगामी परन जोड़ा।


मैंने कोशिश की कि यह भी रिकॉर्ड न निकाले: db.test_users.remove ({"_id": {"$ oid": "4d513345cc9374271b02ec6c"}}); ps: इसे दिखाने के लिए प्रश्न को अपडेट किया
टाइपो जॉनसन

अपने प्रश्न में आपने कहा था कि आपने यह कोशिश की है: db.test_users.remove ({"_id": {"$ oid": new ObjectId ("4d512b45cc9374271b02ec4f}}});
दिमित्री

हां, मैंने अभी-अभी धन्यवाद का सवाल अपडेट किया है, मैंने दोनों की कोशिश की है और न ही काम किया है। हो सकता है कि यह इसलिए है क्योंकि आप उप संपत्ति पर हटा नहीं सकते हैं?
टाइपो जॉनसन

इस तरह से "अज्ञात ऑपरेटर: $ oid" का उपयोग करते हुए
अरमान ओर्टेगा

13

यदि आप आईडी की सूची से हटाना चाहते हैं तो यह बहुत अच्छा है।

db.CollectionName.remove({
    "_id": {
        $in: [
            ObjectId("0930292929292929292929"),
            ObjectId("0920292929292929292929")
        ]
     }
}) 

6

क्या आपके पास एक प्रतिकृति सेट में कई मोंडोडब नोड्स हैं?

मैंने पाया (मैं रोबोमोंगो गुई मोंगो शेल के माध्यम से उपयोग कर रहा हूं, मुझे लगता है कि अन्य मामलों में भी यही बात लागू होती है) कि सही निकालें वाक्यविन्यास, यानी

db.test_users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")})

... तब तक काम नहीं करता जब तक आप प्रतिकृति सेट के प्राथमिक नोड से जुड़े नहीं होते ।


4

मैं बस इस में खुद को टक्कर देता हूं और यह बदलाव मेरे लिए काम करता है:

db.foo.remove({**_id**: new ObjectId("4f872685a64eed5a980ca536")})

4

सबसे पहले ऑब्जेक्ट को mododb से प्राप्त करें ObjectId = आवश्यकता (mongodb) .ObjectID;

फिर आप डिलीट फ़ंक्शन के साथ _id कॉल कर सकते हैं

"_id": ऑब्जेक्टआईड ("4d5192665777000000005490")



1

मान लीजिए कि हमारे पास यह डमी संग्रह है:

{ "_id" : ObjectId("5ea53fedaa79db20d4e14284"), "item" : "planner", "qty" : 75 }

बस उपयोग करें:

db.inventory.deleteOne({ _id: ObjectId("5ea53fedaa79db20d4e14284") })

इसे प्रतिक्रिया के रूप में इसके साथ हटा दिया जाएगा:

{ "acknowledged" : true, "deletedCount" : 1 }

बस।


0

समाधान और उदाहरण:

1- C: \ MongoDB \ Server \ 3.2 \ bin> mongo (अभी तक आदेश जारी न करें क्योंकि आप अभी तक किसी डेटाबेस से कनेक्ट नहीं हैं, आप केवल डेटाबेस सर्वर mongodb से जुड़े हैं)।

2-

शो dbs analytics_database 0.000GB स्थानीय 0.000GB test_database 0.000GB

3-

db test_database पर स्विच किए गए test_database का उपयोग करें

4-

db.Collection.remove ({"_ id": ObjectId ("5694a3590f6d451c1500002e")}, 1); WriteResult ({"nRemoved": 1})

अब आप देखें

किया हुआ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.