2017-02-15 3 views
1

20から500までのネストされたドキュメントで構成される親ドキュメントの配列があります。各親ドキュメントに表示されるネストされたドキュメントの数を制限する方法を教えてください。MongoDBに表示されるネストされたドキュメントの数を制限する方法

以下は、私のドキュメントとネストされたドキュメントの構造です。

[{ 
     id 
     title 
     users: [{ 
       user_id: 1, 
       timestamp: 2354218, 
       field3: 4 
      }, { 
       user_id: 1, 
       timestamp: 2354218, 
       field3: 4 
      }, { 
       user_id: 1, 
       timestamp: 2354218, 
       field3: 4 
      }, 
      ... 
     ] 

    }, { 

    }, 
    ... 
] 

親文書ごとに表示されるユーザー数を制限したいとします。の仕方?

マイクエリ

db.movies.aggregate(
[{$match: { 
    "movie_title": "Toy Story (1995)"} 
    },{ 
    $lookup: { 
     from: "users", 
     localField: "users.user_id", 
     foreignField: "users.id", 
     as: "users" 
    } 
}, 
{$project: { 

     movie_title: "$movie_title", 
     users: { $slice: [ "$users", 1 ] } 
    }} 
]); 

答えて

2

クエリの下に試すことができます。 $sliceを使用して、最初に各ドキュメントのネストされたドキュメント配列のn要素を取得します。

db.collection.aggregate([{ $project: { title: 1, nUsers: { $slice: [ "$users", n ] } } ]) 

または通常のクエリを使用します。

db.collection.find({}, { title: 1, nUsers: {$slice: n } }) 
+0

あなたが言及したように私が$ sliceで使用しているクエリを示しました。しかし、私はそれを働かせるようではない –

+0

私はあなたがすでにそれを考えて願っています。 – Veeram

+0

「ユーザー」に表示するフィールドの数を制限する方法を教えてください。私はユーザーzip_code、職業、性別、年齢などを持っているように...私はzip_codeと職業だけを表示したい。 –

関連する問題