MongoDB konsolunda _id ile kaldır


138

MongoDB konsolunda bir kaydı kimliğe göre nasıl kaldırabilirim? İşte koleksiyonum:

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

Ve işte çalışmayan denediğim komutlar:

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")});

Ada göre kaldırma şu şekilde çalışır:

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

Bu, herhangi bir fark yaratırsa mongodb.org adresindeki tarayıcı kabuğundadır.

Teşekkürler


Bir geri arama ekleyene kadar çözümlerin hiçbiri benim için çalışmadı: db.test_users.remove ({"_id": '4d512b45cc9374271b02ec4f'}, function (err, data) {});
rttmax

Yanıtlar:


273

Çok yakın. Bu çalışacak:

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

yani ObjectId için yeni bir yere ihtiyacınız yok .

Ayrıca, bazı sürücüler / araçları, bu notu remove()artık desteklenmiyor, deleteOneveya deleteManybunun yerine kullanılmalıdır.


4
ayrıca _id db.test_users.remove ({_id: ObjectId ("4d512b45cc9374271b02ec4f")});
alfonsodev

Bunu denedim: TimeAndSpace.remove ({"_id": ObjectId ("8Bd2dZ778LXejYNrL")}); ... ve "Yakalanmamış Referans Hatası: Nesne Kimliği <anonymous>: 2: 13" de tanımlanmadı "
B. Clay Shannon

@BClay Nesne kimliği onaltılık girdi (belki küçük harf de olabilir) beklediğinden, diğerlerinin yanı sıra X, Z karakterlerinde başarısız oluyor.
Nic Cottrell

2
Bu çok hoş.
Guy

Eğer _idalanı otomatik olarak oluşturulmaz (yani bir Nesne Kimliği değil, ama bir String), sadece değerini yazabilirsiniz _idtırnak altında: db.your.database.remove({"_id": "your value"}).
Aleksandar

16

Cevap, mongodb.org'daki web konsolunun / kabuğunun farklı davranması ve beklediğim gibi olmamasıdır. Evde kurulu bir sürüm sorunsuz bir şekilde mükemmel çalıştı, yani; web kabuğunda otomatik olarak oluşturulan _id şu şekilde kaydedildi:

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

Evde aynı belge kurulumu ve otomatik olarak oluşturulan _id şu şekilde kaydedildi:

"_id" : ObjectId("4d5192665777000000005490")

Sorgular ikincisine karşı sorunsuz çalıştı.


1
BSON belgesine farklı şekilde kaydedildiklerinden emin misiniz? Bu farklılıklar, istemcinin sadece çıktıyı farklı biçimlendirmesi gibi görünüyor.
Nic Cottrell

13

_İd, örneğinizdeki bir nesnedir, bu nedenle yalnızca bir nesneyi iletmeniz gerekir

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

Bu çalışmalı

Düzenle: Derlenmesini sağlamak için son parantez eklendi.


Bunu da denedim, kaydı kaldırmadı: db.test_users.remove ({"_id": {"$ oid": "4d513345cc9374271b02ec6c"}}); ps: soruyu bunu gösterecek şekilde güncellendi
Typo Johnson

Sorunuzda şunu denediğinizi söylediniz: db.test_users.remove ({"_id": {"$ oid": new ObjectId ("4d512b45cc9374271b02ec4f")}});
Dmitri

Evet, soruyu şimdi güncelledim teşekkürler, ikisini de denedim ve hiçbiri işe yaramadı. Belki bunun nedeni bir alt mülkte silememenizdir?
Typo Johnson

bu şekilde kullanmak "bilinmeyen operatör: $ oid" döndürür
Arman Ortega

13

Bir kimlik listesi ile kaldırmak isterseniz, bu harika çalışıyor.

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

6

Bir çoğaltma kümesinde birden fazla mongodb düğümünüz var mı?

Doğru sözdizimini kaldırma sözdizimini buldum (Robomongo gui mongo kabuğu üzerinden kullanıyorum, sanırım aynısı diğer durumlarda da geçerli)

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

... çoğaltma kümesinin birincil düğümüne bağlanmadığınız sürece çalışmaz .


4

Bununla kendim karşılaştım ve bu varyasyon benim için çalıştı:

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

4

önce mongodb ObjectId = require (mongodb) .ObjectID'den ObjectID işlevini alın;

daha sonra silme işlevi ile _id çağırabilirsiniz

"_id": ObjectId ("4d5192665777000000005490")



1

Şu kukla koleksiyonumuz olduğunu varsayalım:

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

basitçe şunu kullanın:

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

yanıt olarak bununla silinecek:

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

Bu kadar.


0

Çözüm ve Örnek:

1- C: \ MongoDB \ Server \ 3.2 \ bin> mongo (henüz herhangi bir veritabanına bağlı olmadığınız için henüz komut vermeyin, yalnızca veritabanı sunucusu mongodb'ye bağlısınız).

2-

dbs analytics_database göster 0.000GB yerel 0.000GB test_database 0.000GB

3-

test_database'i kullanın db test_database olarak değiştirildi

4-

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

şimdi WriteResult ({"nRemoved": 1}) 0 değil 1 olduğunu görüyorsunuz.

Bitti.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.