MongoDB를 사용하여 어레이에서 특정 항목 제거
저는 Codeigniter와 MongoDB를 이용한 웹 앱을 개발하고 있습니다.사용자는 파일을 업로드하고 다른 사용자는 파일에 주석을 달 수 있습니다.
나는 주석을 주 파일 문서의 주석이라는 배열에 저장합니다.이 모든 것은 괜찮지만 배열에서 특정 주석을 제거하려면 어떻게 해야 합니까?
사용자가 여러 개의 댓글을 추가할 수 있기 때문에 ID를 키로 사용할 수 없습니다.제가 그것을 할 수 있다고 어떻게 추천하시겠습니까?
다음은 내 의견 배열입니다.
"comments": [
{
"user_id": ObjectId("4f240b433dc7937d68030000"),
"user_name": "james",
"user_comment": "This is a comment",
"created_at": "2012-01-2821: 20: 44"
},
{
"user_id": ObjectId("4f240b433dc7937d68030000"),
"user_name": "mandy",
"user_comment": "This is another comment",
"created_at": "2012-01-2821: 31: 07"
}
],
사용자 ID, 이름 또는 설명을 일치시켜 설명 항목을 식별할 수 있는 경우 - 다음을 사용하여 해당 설명을 제거할 수 있습니다.update()
와의 지휘권.$pull
적절한 조건과 함께 수식자.
위와 같이 할 수 없는 경우 댓글에 고유 ID를 포함합니다(예:UUID
).
주석을 삭제하려면 다음을 수행합니다.
db.coll.update({<cond to identify document}, {$pull: {'comments': {'name': <name>}}} )
선호하는 ID를 사용하는 경우:
db.coll.update({<cond to identify document}, {$pull: {'comments': {'id': <id>}}} )
아마도 당신은 그것에 의해 댓글을 제거할 수 있습니다.created_at
시간, 시간은 고유하기 때문입니다.
$db.coll.update({cond to identify document},{$pull:{'comments':{'created_at':<>}}})
제 생각에 당신은 삽입할 때 각각의 댓글에 mongodbid를 추가한 것 같습니다.다음과 같은 새 몽고비드를 만들 수 있습니다.
$comment_id = new MongoID();
이제 @smoothy의 답변처럼 $pull + $update로 id별로 댓글을 삭제할 수 있습니다.
언급URL : https://stackoverflow.com/questions/9048424/removing-specific-items-from-array-with-mongodb
'programing' 카테고리의 다른 글
SQL Server 데이터베이스에서 모든 저장 프로시저를 한 번에 삭제하는 방법은 무엇입니까? (0) | 2023.07.03 |
---|---|
Mongo $lookup이 왼쪽 외부 조인이라면 일치하지 않는 문서를 제외하는 이유는 무엇입니까? (0) | 2023.07.03 |
서버를 다시 시작하지 않고 Spring Boot가 코드의 변경 사항을 로드하는 방법 (0) | 2023.07.03 |
일부 표에서 특정 열을 참조하는 모든 저장 프로시저 찾기 (0) | 2023.07.03 |
C에서 'atoi' 기능에 대한 경고 표시 (0) | 2023.07.03 |