[mongodb] MongoDB 콘솔에서 _id로 제거

MongoDB 콘솔에서 ID로 레코드를 제거하는 방법은 무엇입니까? 내 컬렉션은 다음과 같습니다.

[
  {
     "_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.deleteOne( {"_id": ObjectId("4d512b45cc9374271b02ec4f")});

즉, 당신은 ObjectId를 위해 새로운 것이 필요하지 않습니다 .

또한, 일부 드라이버 / 도구에 있습니다 remove()지금은 사용되지 않으며 deleteOne또는 deleteMany대신 사용해야합니다.


답변

대답은 mongodb.org의 웹 콘솔 / 쉘이 예상대로 다르게 동작한다는 것입니다. 집에 설치된 버전은 문제없이 완벽하게 작동했습니다. 웹 셸에서 자동 생성 된 _id는 다음과 같이 저장되었습니다.

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

집에서 동일한 문서 설정과 자동 생성 _id가 다음과 같이 저장되었습니다.

"_id" : ObjectId("4d5192665777000000005490")

쿼리는 후자에 대해 아무런 문제없이 작동했습니다.


답변

글쎄, _id는 예제에서 객체이므로 객체를 전달하면됩니다.

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

이 작동합니다

편집 : 컴파일 할 수 있도록 후행 paren을 추가했습니다.


답변

ID 목록으로 제거하려면이 방법이 효과적입니다.

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


답변

복제 세트에 여러 mongodb 노드가 있습니까?

나는 올바른 제거 구문, 즉

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

… 복제 세트 의 기본 노드에 연결되어 있지 않으면 작동하지 않습니다 .


답변

방금이 문제에 부딪 쳤 으며이 변형이 저에게 효과적이었습니다.

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


답변

먼저 mongodb에서 ObjectID 함수를 가져옵니다. ObjectId = require (mongodb) .ObjectID;

그런 다음 delete 함수를 사용하여 _id를 호출 할 수 있습니다

“_id”: ObjectId ( “4d5192665777000000005490”)