マングースの参加リスト

藻類

私はマングースに不慣れで、以下の2つのスキーマがあります

contentschema
{ "_id" : autogenerated
  "title": "string",
  "description": "string",
}

viewedschema
{ "_id" : autogenerated
  "contentid": "ref content",
  "viewedby": "string",
 }

コンテンツを表示したすべてのユーザーは、contentid参照を持つviewedschemaコレクションに保存されます。

注:表示されるレコードの数が膨大になるため、コンテンツ内で埋め込みドキュメントとして表示したくありません。

マングースでは、すべてのコンテンツ(コンテンツスキーマの配列)を表示する方法はありますか?[SQLの内部結合に似ています]。

前もって感謝します。

クレメントアマーナス

$ lookup使用して、同じデータベースの2つの異なるコレクション内のドキュメントをマージし、コレクションに対して左外部結合を実行できます。

以下の資料をcontent集めてみましょう

{
        "_id" : ObjectId("59ef51f106b0505f997f84c8"),
        "title" : "myfavoritesong",
        "description" : "A wonderful composition using string instruments"
}
{
        "_id" : ObjectId("59ef52ad06b0505f997f84ca"),
        "title" : "myfavoritestory",
        "description" : "An interesting short story with a twisted ending"
}

viewedコレクション内のドキュメント

{
        "_id" : ObjectId("59ef523706b0505f997f84c9"),
        "contentid" : ObjectId("59ef51f106b0505f997f84c8"),
        "viewedby" : "user1"
}
{
        "_id" : ObjectId("59ef52f406b0505f997f84cb"),
        "contentid" : ObjectId("59ef52ad06b0505f997f84ca"),
        "viewedby" : "user2"
}
{
        "_id" : ObjectId("59ef53c706b0505f997f84cc"),
        "contentid" : ObjectId("59ef52ad06b0505f997f84ca"),
        "viewedby" : "user3"
}

2つのコレクションを組み合わせて$ lookupを使用した最終的な集計クエリは次のとおりです。

db.viewed.aggregate({
    $lookup:{
        from : "content", 
        localField: "contentid", 
        foreignField:"_id",
        as:"viewed_contents"
    }
})

サンプルデータの集計クエリの結果は次のとおりです。

{
        "_id" : ObjectId("59ef523706b0505f997f84c9"),
        "contentid" : ObjectId("59ef51f106b0505f997f84c8"),
        "viewedby" : "user1",
        "viewed_contents" : [
                {
                        "_id" : ObjectId("59ef51f106b0505f997f84c8"),
                        "title" : "myfavoritesong",
                        "description" : "A wonderful composition using string in
struments"
                }
        ]
}
{
        "_id" : ObjectId("59ef52f406b0505f997f84cb"),
        "contentid" : ObjectId("59ef52ad06b0505f997f84ca"),
        "viewedby" : "user2",
        "viewed_contents" : [
                {
                        "_id" : ObjectId("59ef52ad06b0505f997f84ca"),
                        "title" : "myfavoritestory",
                        "description" : "An interesting short story with a twist
ed ending"
                }
        ]
}
{
        "_id" : ObjectId("59ef53c706b0505f997f84cc"),
        "contentid" : ObjectId("59ef52ad06b0505f997f84ca"),
        "viewedby" : "user3",
        "viewed_contents" : [
                {
                        "_id" : ObjectId("59ef52ad06b0505f997f84ca"),
                        "title" : "myfavoritestory",
                        "description" : "An interesting short story with a twist
ed ending"
                }
        ]
}

viewed外国とcontent地元のコレクションを交換することもできますのでご注意ください

db.content.aggregate({
   $lookup:{
     from : "viewed", 
     localField: "_id", 
     foreignField:"contentid",
     as:"contents_viewed_by"
   }
})

この集計クエリの結果は次のとおりです

{
        "_id" : ObjectId("59ef51f106b0505f997f84c8"),
        "title" : "myfavoritesong",
        "description" : "A wonderful composition using string instruments",
        "contents_viewed_by" : [
                {
                        "_id" : ObjectId("59ef523706b0505f997f84c9"),
                        "contentid" : ObjectId("59ef51f106b0505f997f84c8"),
                        "viewedby" : "user1"
                }
        ]
}
{
        "_id" : ObjectId("59ef52ad06b0505f997f84ca"),
        "title" : "myfavoritestory",
        "description" : "An interesting short story with a twisted ending",
        "contents_viewed_by" : [
                {
                        "_id" : ObjectId("59ef52f406b0505f997f84cb"),
                        "contentid" : ObjectId("59ef52ad06b0505f997f84ca"),
                        "viewedby" : "user2"
                },
                {
                        "_id" : ObjectId("59ef53c706b0505f997f84cc"),
                        "contentid" : ObjectId("59ef52ad06b0505f997f84ca"),
                        "viewedby" : "user3"
                }
        ]
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonリストのマッピングと参加

分類Dev

パンダのグループ化と参加リスト

分類Dev

Spark構造化ストリーミングストリーム-ストリーム参加の質問

分類Dev

マングースの2つのコレクションに参加する方法

分類Dev

ストリームへの参加

分類Dev

参加してマングースでクエリを実行する方法

分類Dev

リスト内のマングースクエリ条件

分類Dev

ApacheSparkストリーミング-参加するためのキャッシュデータセット

分類Dev

DTOリストのマッピング/ストリーミング

分類Dev

haskellのリストのリストでのパターンマッチング

分類Dev

空のリストのリストのパターンマッチング

分類Dev

リストへの参加

分類Dev

ネストされたスキーマのマングースクエリ

分類Dev

ストリームを使用して2つのマップのJava 8に参加

分類Dev

タイプスクリプトの方法でマングース...?

分類Dev

マングースのネストされたクエリ

分類Dev

参照のリストをマングースに保存します

分類Dev

マングース:年のリストを照会する

分類Dev

SQLZooホワイトクリスマスの自己参加日

分類Dev

Pythonでのリストのパターンマッチング

分類Dev

SMLのリストのパターンマッチング

分類Dev

タブキーのタグリストマッピング

分類Dev

マルチキャストグループに参加するためのLinux組み込みまたはオープンソースプログラム?

分類Dev

プロローグの2つのリストに参加しますか?

分類Dev

Pythonでのマトリックスミラーリング

分類Dev

LINQを使用してリスト内のグループに参加する

分類Dev

groovyswitchステートメントでのリストマッチング

分類Dev

Bashスクリプトのパターンマッチング

分類Dev

マングースのドキュメントのリストを除外する

Related 関連記事

  1. 1

    Pythonリストのマッピングと参加

  2. 2

    パンダのグループ化と参加リスト

  3. 3

    Spark構造化ストリーミングストリーム-ストリーム参加の質問

  4. 4

    マングースの2つのコレクションに参加する方法

  5. 5

    ストリームへの参加

  6. 6

    参加してマングースでクエリを実行する方法

  7. 7

    リスト内のマングースクエリ条件

  8. 8

    ApacheSparkストリーミング-参加するためのキャッシュデータセット

  9. 9

    DTOリストのマッピング/ストリーミング

  10. 10

    haskellのリストのリストでのパターンマッチング

  11. 11

    空のリストのリストのパターンマッチング

  12. 12

    リストへの参加

  13. 13

    ネストされたスキーマのマングースクエリ

  14. 14

    ストリームを使用して2つのマップのJava 8に参加

  15. 15

    タイプスクリプトの方法でマングース...?

  16. 16

    マングースのネストされたクエリ

  17. 17

    参照のリストをマングースに保存します

  18. 18

    マングース:年のリストを照会する

  19. 19

    SQLZooホワイトクリスマスの自己参加日

  20. 20

    Pythonでのリストのパターンマッチング

  21. 21

    SMLのリストのパターンマッチング

  22. 22

    タブキーのタグリストマッピング

  23. 23

    マルチキャストグループに参加するためのLinux組み込みまたはオープンソースプログラム?

  24. 24

    プロローグの2つのリストに参加しますか?

  25. 25

    Pythonでのマトリックスミラーリング

  26. 26

    LINQを使用してリスト内のグループに参加する

  27. 27

    groovyswitchステートメントでのリストマッチング

  28. 28

    Bashスクリプトのパターンマッチング

  29. 29

    マングースのドキュメントのリストを除外する

ホットタグ

アーカイブ