"Messages" & "ConversationMappings"という2つのコレクションがあります。メッセージは個々の電子メールメッセージの集合です。 ConversationMappingsは、1つの会話スレッドの一部であるメッセージの集合です。は2つのMongoDBコレクションに相当するものです
私は削除しようとしている孤立した「ConversationMappings」がたくさんあるので、メッセージを持たないConversationMappingsを見つけて削除しようとしています。
私は999個のメッセージと20,000以上の会話マッピングを持っており、999メッセージのコレクションにメッセージを持たないすべての会話マッピングを削除する必要があります。これは、単純なリレーショナルに参加でしょう....が、私はコレクションのスキーマ
**Message**
({
"created_at": ISODate("2016-10-05T14:04:31.690-07:00"),
"account_id": "579f7b64144a99xxxxxx81d94db",
"from": {
"name": "Joe Emailer",
"email": "[email protected]"
},
"message": "Text of the message",
"timestamp": ISODate("2015-06-16T12:40:55.322-07:00"),
"to": {
"name": "Jane Emailer",
"email": "[email protected]"
},
"updated_at": ISODate("2016-10-05T14:04:31.690-07:00")
})
**ConversationMapping**
({
"archived": false,
"messages": [
"5xxxxxxxxxxxxx81d94db",
"5xxxxxxxxxxxxx81d94dc",
"5xxxxxxxxxxxxx81d94dd",
"5xxxxxxxxxxxxx81d94de"
],
"account_id": "579f7b64144a99xxxxxx81d94db",
"participants": [
"[email protected]",
"[email protected]"
],
"timestamp": ISODate("2014-07-24T17:00:00.000-07:00")
})
私はこれが好きです...しかし、私のデータモデルではそれが意味をなさないと思います。 account_idは、ConversationMappings&Messagesの両方の外部フィールドです。フィールド "messages"にはmessage_idsの配列が格納されています(最初は間違ったカラム名を使用しました)。 – NothingToSeeHere
は、基本的に両方のコレクションに存在するフィールドを使用できます。 (名前は異なりますが、同じ値を持つ必要があります)。したがって、conversationMapping内のmessage_id配列がmessage_idをメッセージコレクションに格納している場合は、それを使用することもできます。詳しくは、このリンクを参照してください。https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/ –