[MONGODB] 단일 쿼리에 몽고에서 여러 문서를 제거
MONGODB단일 쿼리에 몽고에서 여러 문서를 제거
나는 몽고 '_id'나는 삭제하려는 목록을 가지고있다. 현재 내가이 일을하고있다
# inactive_users --> list of inactive users
for item in inactive_users:
db.users.remove({'_id' : item})
하지만 내 문제는 (이 100,000 +를 갈 수도) ... 목록이 너무 거대하다. 목록에있는 모든 항목에 대한 쿼리 만 서버의 부하를 증가 그래서. 나는 또 다시 화재 쿼리 필요 없다 너무 몽고 쿼리의 전체 목록을 전달하는 그들의 방법입니다.
고맙습니다
해결법
-
==============================
1.
db.users.remove({'_id':{'$in':inactive_users}})
-
==============================
2.목록 모두 및 연산자를 사용 $ :
목록 모두 및 연산자를 사용 $ :
db.users.remove({_id:{$in:[id1, id2, id3, ... ]}})
-
==============================
3.당신은 ObjectId가 ()를 사용하여 특정 형식으로 ID를 전달해야합니다 :
당신은 ObjectId가 ()를 사용하여 특정 형식으로 ID를 전달해야합니다 :
db.users.remove({_id: {$in: [ObjectId('Item1'), ObjectId('Item2'), ObjectId('Item2')]}});
제거 정수 동의하지 않습니다 - 당신은 문자열로 _id 형식 ObjectId가 인스턴스를 사용해야합니다.
-
==============================
4.
var collection = db.users; var usersDelete = []; var ObjectID = req.mongo.ObjectID; //req is request from express req.body.forEach(function(item){ //req.body => [{'_id' : ".." , "name" : "john"}] usersDelete.push(new ObjectID(item._id)); }); collection.remove({'_id':{'$in': usersDelete}},function(){ //res.json(contatos); });
-
==============================
5.나는이 답변에 동일한 질문으로 실행했다하지만 MongoDB의 설명서가 제거 대신 deleteMany 추천 것 같다. deleteMany은 삭제 계수뿐만 아니라 (조작이 성공했을 경우) 쓰기 우려의 승인을 반환합니다.
나는이 답변에 동일한 질문으로 실행했다하지만 MongoDB의 설명서가 제거 대신 deleteMany 추천 것 같다. deleteMany은 삭제 계수뿐만 아니라 (조작이 성공했을 경우) 쓰기 우려의 승인을 반환합니다.
const ids = [id1, id2, id3...]; const query = { _id: { $in: ids} }; dbo.collection("users").deleteMany(query, function (err, obj) { if (err) throw err; });
또는 화살표 기능 :
const ids = [id1, id2, id3...]; const query = { _id: { $in: ids} }; dbo.collection("users").deleteMany(query, (err, obj) => { if (err) throw err; });
또는 더 나은 아직, 약속과 :
const ids = [id1, id2, id3...]; const query = { _id: { $in: ids} }; dbo.collection("users").deleteMany(query) .then(result => { console.log("Records Deleted"); console.log(JSON.stringify(result)); //for number removed... console.log("Removed: " + result["n"]); }) .catch(err => { console.log("Error"); console.log(err); });
from https://stackoverflow.com/questions/18566590/remove-multiple-documents-from-mongo-in-a-single-query by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 몽고는 ID의 목록을 찾을 수 있습니다 (0) | 2019.12.11 |
---|---|
[MONGODB] 유성 - collection.find ()는 항상 모든 필드를 반환 (0) | 2019.12.11 |
[MONGODB] MongoDB를 '$ geoNear 쿼리에 대한 인덱스를 찾을 수 없습니다' (0) | 2019.12.11 |
[MONGODB] JSON 문자열에서 생성 BSON 객체 (0) | 2019.12.11 |
[MONGODB] 유성 : 예기치 않은 몽고 종료 코드 (100) (0) | 2019.12.11 |