2011-02-08 60 views
99

Trong bảng điều khiển MongoDB làm cách nào tôi có thể xóa bản ghi theo id? Dưới đây là bộ sưu tập của tôi:Xóa bởi _id trong bảng điều khiển MongoDB

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

Và đây là các lệnh tôi đã cố gắng mà không có tác dụng:

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

Loại bỏ theo tên hoạt động:

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

này nằm trong trình duyệt vỏ trên tại mongodb.org nếu điều đó tạo ra bất kỳ sự khác biệt nào

Cảm ơn

+1

Bạn nên nghĩ đến việc đưa ra câu trả lời cho ai đó. – nottinhill

+1

Bạn thực sự nên cung cấp cho ai đó câu trả lời. Tôi muốn đề nghị Nic Cottrell –

+0

Không có giải pháp nào làm việc cho tôi cho đến khi tôi thêm một cuộc gọi lại: db.test_users.remove ({"_id": '4d512b45cc9374271b02ec4f'}, hàm (err, data) {}); – rttmax

Trả lời

11

Vâng, _id là một đối tượng trong ví dụ của bạn, vì vậy bạn chỉ cần phải vượt qua một đối tượng

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

này nên làm việc

Chỉnh sửa: Thêm trailing Dấu ngoặc đơn để đảm bảo rằng nó được biên dịch.

+0

Tôi đã thử rằng nó cũng không xóa bản ghi: db.test_users.remove ({"_id": {"$ oid": "4d513345cc9374271b02ec6c"}}); ps: cập nhật câu hỏi để hiển thị số này –

+0

Trong câu hỏi của bạn, bạn đã nói rằng bạn đã thử điều này: db.test_users.remove ({"_id": {"$ oid": new ObjectId ("4d512b45cc9374271b02ec4f")}}); – Dmitri

+0

Có, tôi đã cập nhật câu hỏi ngay bây giờ, tôi đã thử cả hai và không hoạt động. Có lẽ điều này là do bạn không thể xóa trên thuộc tính phụ? –

15

Câu trả lời là giao diện điều khiển web/shell tại mongodb.org hoạt động khác và không như tôi mong đợi. Một phiên bản cài đặt tại nhà làm việc hoàn hảo mà không có vấn đề tức là; tự động tạo ra _id trên vỏ web đã được cứu như thế này:

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

Quá trình cài đặt cùng một tài liệu ở nhà và tự động tạo _id đã được cứu như thế này:

"_id" : ObjectId("4d5192665777000000005490") 

Queries làm việc chống lại sau mà không vấn đề .

+0

Bạn có chắc chắn rằng chúng được lưu khác nhau trong tài liệu BSON không? Những khác biệt đó trông giống như khách hàng chỉ định dạng đầu ra khác nhau. –

4

Tôi vừa đâm sầm vào này bản thân mình và sự thay đổi này đã làm việc cho tôi:

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

Rất gần. Điều này sẽ làm việc:

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

ví dụ: bạn không cần một mới cho ObjectId.

+4

nó cũng sẽ hoạt động mà không có dấu ngoặc kép quanh _id db.test_users.remove ({_id: ObjectId ("4d512b45cc9374271b02ec4f")}); – alfonsodev

+0

Tôi đã thử điều này: TimeAndSpace.remove ({"_id": ObjectId ("8Bd2dZ778LXejYNrL")}); ... và tôi nhận được, "Tham chiếu không bắt buộcLỗi: ObjectId không được xác định tại : 2: 13" –

+0

@BClay ID đối tượng mong muốn đầu vào thập lục phân (có thể là chữ thường) do đó không thành công trên các ký tự X, Z. –

15

Tôi đã thử. Điều này làm việc tốt cho tôi.

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

mới nhất khác với câu trả lời của @Nic Cottrell là gì? – Sadikhasan

1

Giải pháp và Ví dụ:

1- C: \ MongoDB \ Server \ 3.2 \ bin> Mongo (không thực hiện lệnh nhưng vì bạn không kết nối với bất kỳ cơ sở dữ liệu nào, bạn chỉ được kết nối với máy chủ cơ sở dữ liệu mongodb).

2-

show dbs analytics_database 0.000GB local 0.000GB test_database 0.000GB

3-

use test_database switched to db test_database

4-

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

bây giờ bạn thấy WriteResult ({ "nRemoved": 1}) là 1 không phải là 0.

Xong.

6

Nếu bạn muốn xóa bằng danh sách ID, điều này sẽ hoạt động rất tốt.

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

đầu tiên có được chức năng ObjectId từ MongoDB ObjectId = yêu cầu (MongoDB) .ObjectID;

sau đó bạn có thể gọi _id với chức năng xóa

"_id": ObjectId ("4d5192665777000000005490")

1

Bạn có nhiều nút MongoDB trong một bản sao thiết lập?

tôi thấy (Tôi đang sử dụng qua Robomongo vỏ gui Mongo, tôi đoán cũng áp dụng trong các trường hợp khác) mà cú pháp remove đúng, tức là

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

... không hoạt động trừ khi bạn đang kết nối với nút chính của bộ bản sao.

Các vấn đề liên quan