이 기사에서 PHP 편집자 Youzi는 한 컬렉션의 데이터를 다른 컬렉션에 삽입하는 일반적인 작업인 집계를 소개합니다. 집계 작업은 프로그래밍에서 매우 일반적이며 데이터 병합, 중복 제거, 필터링과 같은 다양한 시나리오에서 사용될 수 있습니다. 집계 작업을 통해 데이터를 쉽게 처리하고 관리할 수 있어 코드의 효율성과 가독성이 향상됩니다. 다음으로, 모든 사람이 이 기술을 더 잘 익힐 수 있도록 집계 작업의 사용 방법과 주의 사항을 자세히 소개하겠습니다.
특정 사용자의 chat
集合中获取聊天列表,并将发送的 message
컬렉션에 있는 마지막 메시지를 각 채팅의 해당 목록에 추가하기 위해 다음을 수행하려고 합니다.
이제 작동 방식은 아래에 설명된 두 가지 방법이 있습니다
먼저 채팅 회원 ID를 사용하여 채팅 목록을 가져오고, 두 번째 방법은 집계를 사용하여 각 채팅의 마지막 메시지를 찾은 다음 메시지를 채팅 ID와 일치시킵니다
좋아하는 채팅:
으아아아P.S.
lastmessage
- 항상 0입니다. 사용자에 대한 응답을 작성하는 데만 필요합니다.
컬렉션message
:
첫 번째 방법: 특정 채팅 참가자의 활성 채팅 목록을 가져오려면 이 방법이 필요합니다.
으아아아두 번째 방법: 각 채팅의 마지막 메시지를 얻으려면 이 방법이 필요합니다. 입력은 채팅 ID 세트이며, 각 채팅에 대해 마지막 메시지가 있는 경우 검색합니다. 이를 위해 집계를 사용합니다.
으아아아이것이 정말 나쁜 해결책이라는 것을 알고 있지만 이것이 지금까지 제가 생각할 수 있는 전부이며 안타깝습니다(작동하지 않습니다). 나는 이 문제를 해결하려고 노력합니다
으아아아내 질문은: 집계를 사용하여 특정 사용자에 대한 채팅 목록을 얻고 각 채팅에 대해 message
集合中添加对象 chat
컬렉션의 chat
개체에 있는 last_message 필드에 마지막 메시지를 추가하는 방법입니다.
현재 작동 방식:
type chat struct { id string `json:"id" bson:"id"` participants []string `json:"participants" bson:"participants"` lastmessage *message `json:"last_message,omitempty" bson:"last_message"` ... }
EDIT: 댓글에서 OP가 언급했듯이 update/$merge
to 컬렉션은 필요하지 않습니다.
$lookup
의 하위 파이프라인에서 $sort
+ $limit
메서드를 간단히 실행할 수 있습니다. $unwind
를 실행하여 검색 결과를 last_message
필드에 씁니다. 마지막으로 $lookup
的子管道中执行 $sort
+ $limit
方法。执行 $unwind
将查找结果写入 last_message
字段。最后,执行 $merge
以更新回 chat
를 실행하여 chat
컬렉션으로 다시 업데이트하세요.
여기 오래된 mongo 놀이터가 $merge
컬렉션으로 업데이트되었습니다.
위 내용은 집계, 한 컬렉션의 데이터를 다른 컬렉션에 삽입의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!