MongoDB 콘솔에서 _id로 제거


138

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.remove ({ "_id": '4d512b45cc9374271b02ec4f'}, function (err, data) {});
rttmax

답변:


273

아주 근접한. 이것은 작동합니다 :

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

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

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


4
_id db.test_users.remove ({_id : ObjectId ( "4d512b45cc9374271b02ec4f")}) 주위에 따옴표 없이도 작동합니다.
alfonsodev

나는 이것을 시도했다 : TimeAndSpace.remove ({ "_id": ObjectId ( "8Bd2dZ778LXejYNrL")}); ... 그리고 "Uncaught ReferenceError : ObjectId is <anonymous> : 2 : 13"에 정의되어 있지 않습니다
.

@BClay 객체 ID는 16 진 입력 (소문자 일 수도 있음)을 기대하므로 X, Z 문자에서 실패합니다.
Nic Cottrell

2
이것은 _reidiculous입니다.
Guy

은 IF _id필드가 자동으로 생성되지 않습니다 (즉, 그것은 ObjectId가 아니지만, 문자열), 당신은 단지의 가치 쓸 수 있습니다 _id인용 부호 아래를 : db.your.database.remove({"_id": "your value"}).
Aleksandar

16

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

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

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

"_id" : ObjectId("4d5192665777000000005490")

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


1
문서 BSON에 다르게 저장 되었습니까? 이러한 차이점은 클라이언트가 출력 형식을 다르게 지정하는 것처럼 보입니다.
Nic Cottrell

13

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

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

이 작동합니다

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


나도 시도했지만 레코드를 제거하지 않았다 : db.test_users.remove ({ "_id": { "$ oid": "4d513345cc9374271b02ec6c"}}); 추신 :이를 보여주기 위해 질문을 업데이트
Typo Johnson

귀하의 질문에 당신은 이것을 시도했다고 말했다 : db.test_users.remove ({ "_id": { "$ oid": new ObjectId ( "4d512b45cc9374271b02ec4f")}} ;;
Dmitri

예, 지금 질문을 업데이트했습니다. 두 가지 모두 시도했지만 모두 시도하지 않았습니다. 하위 속성에서 삭제할 수 없기 때문일 수 있습니다.
Typo Johnson

이 방법을 사용하면 "알 수없는 연산자 : $ oid"가 반환됩니다.
Arman Ortega

13

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

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

6

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

나는 올바른 제거 구문, 즉

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

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


4

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

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

4

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

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

"_id": ObjectId ( "4d5192665777000000005490")


2

이 게시물이 오래되었지만 collection.remove는 더 이상 사용되지 않습니다! collection.delete_one대신 사용해야합니다!

자세한 내용은 여기 #remove 에서 찾을 수 있습니다.


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 표시

삼-

test_database를 db test_database로 전환하여 사용

4-

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

이제 WriteResult ({ "nRemoved": 1})가 1이 아니라 1임을 알 수 있습니다.

끝난.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.