Mongo DB에 문제가 있습니다. 어떻게 든 행 항목에 잘못된 ObjectId가 있습니다. ObjectId의 길이가 잘못되었습니다.Mongo에 잘못된 ObjectId가 있습니다.
어떻게 Mongo가 해당 ObjectId를 강제로 삭제할 수 있습니까 ??
감사합니다.
Mongo DB에 문제가 있습니다. 어떻게 든 행 항목에 잘못된 ObjectId가 있습니다. ObjectId의 길이가 잘못되었습니다.Mongo에 잘못된 ObjectId가 있습니다.
어떻게 Mongo가 해당 ObjectId를 강제로 삭제할 수 있습니까 ??
감사합니다.
저는이 문제를 이해하지 못하고 있는지 궁금합니다. 하지만 당신은 단순히 할 수 없어 :
db.collection.remove({"_id":"yourInvalidId"});
행을 제거한 다음 다시 삽입 하시겠습니까? 해당 객체 내에서 다른 필드가있는 경우
바로 다음을 수행하십시오
db.collection.remove({"fieldName":"fieldValue"})
하고는, 다시 추가이 분야에 업데이트를하는 것보다 더 안전합니다.
MongoDB의 ObjectId는 할당시 고유 할 확률이 높도록 설계된 특수한 12 바이트 BSON 데이터 유형입니다 (예 : 현재 시간, 특정 시스템 등을 기반으로 생성됨).
MongoDB 드라이버에서 제공하는 방법을 사용하여 주어진 ID 문자열의 유효성을 검사 할 수 있습니다. 클래스
static boolean isValid(String s)
:
org.bson.types.ObjectId
가 주어진 입력 문자열이 corrent ObjectId가인지 여부를 확인하기 위해 예를 들어, 자바, 다음과 같은 방법을 사용할 수 있습니다.
희망이 도움이 되겠습니다.
_id 필드를 업데이트 할 수 없으므로 (mongo 제한 사항) 행을 복사하고 이전 행을 삭제해야합니다. 쉘에서 는 :
var row = db.yourcollection.findOne({_id : "your invalid id"})
db.yourcollection.remove({_id : "your invalid id"}))
row._id = new ObjectId()
db.yourcollection.insert(row)
그러나 이것은 당신이 이상한 인 잘못 lengthed OBJECTIF, 당신은 스스로를 창조 하셨 는가
?이 오류는 코드에 의미 상 오류가있을 때 발생할 수 있습니다. objectId에 따라 행을 제거하지 않고 업데이트 할 수 있습니다.
BasicDBObject query = new BasicDBObject();
query.put("_id", "your id");
DBObject dbObj = testCol.findOne(query);
BasicDBList Brand_children= (BasicDBList) dbObj.get("children");
Brand_children.add(itemBrand);
System.out.println(Brand_children);
testCol.save(dbObj);
그리고 또한 위와 같이
단지는 참고하시기 바랍니다 제거 할 수있다; 여기에 한 걸음 더 나아가고 있습니다. _id를 찾아 제외 할 수 있으며 새 행을 삽입하면 자동으로 새 ID가 작성됩니다. – Petrogad