programing

MongoDB를 사용하여 어레이에서 특정 항목 제거

lovejava 2023. 7. 3. 22:27

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