如何限制MongoDB

时间:2017-02-15 19:22:53

标签: mongodb nested document

我有一系列父文档,包含20到500之间的嵌套文档。如何限制为每个父文档显示的嵌套文档的数量。

下面是我的文档和嵌套文档的结构。

[{
        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 ] }
    }}
]);

1 个答案:

答案 0 :(得分:3)

您可以尝试以下查询。使用n获取每个文档的嵌套文档数组中的大多数第一个db.collection.aggregate([{ $project: { title: 1, nUsers: { $slice: [ "$users", n ] } } ]) 元素。

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

或使用常规查询。

public function update($id)
{
    if(Auth::user()->id != $id)
    {
        // return Access error here
    }

    // Update profile here
}