반응형
단일 쿼리에서 mongo에서 여러 문서 제거
삭제하고 싶은 mongo '_id' 목록이 있습니다.현재 저는 이것을 하고 있습니다.
# inactive_users --> list of inactive users
for item in inactive_users:
db.users.remove({'_id' : item})
하지만 제 문제는 목록이 너무 크다는 거예요(100,000 +로 갈 수도 있습니다.)따라서 목록의 모든 항목을 쿼리하면 서버의 부하만 증가합니다.그들은 내가 쿼리를 반복해서 실행할 필요가 없도록 전체 목록을 mongo 쿼리로 전달하는 방법입니다.
감사해요.
db.users.deleteMany({'_id':{'$in':inactive_users}})
모두 나열하고 사용합니다.$in
연산자:
db.users.remove({_id:{$in:[id1, id2, id3, ... ]}})
다음을 사용하여 특정 형식으로 ID를 전달해야 합니다.ObjectId()
:
db.users.remove({_id: {$in: [ObjectId('Item1'), ObjectId('Item2'), ObjectId('Item2')]}});
Remove
정수를 사용할 수 없습니다. 사용해야 합니다.ObjectId
의 예._id
형식을 지정합니다.string
.
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);
});
저도 같은 질문을 하고 이 답변들을 검색했는데 MongoDB 매뉴얼에서 remove 대신 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);
});
언급URL : https://stackoverflow.com/questions/18566590/remove-multiple-documents-from-mongo-in-a-single-query
반응형
'source' 카테고리의 다른 글
Python 3 - 인코딩/디코드 대 바이트/스트론 (0) | 2023.05.17 |
---|---|
Postgre 작성SQL ROLE(사용자)(존재하지 않는 경우) (0) | 2023.05.17 |
ASP.NET의 세션 시간 초과 (0) | 2023.05.17 |
MongoDB 및 C#: 대소문자 구분 안 함 검색 (0) | 2023.05.17 |
"다른 프로세스에서 사용 중" 예외가 발생한 경우에도 파일을 읽는 방법은 무엇입니까? (0) | 2023.05.17 |