MongoDB:使用分页查询嵌套数组

MongoDB:使用分页查询嵌套数组,mongodb,nosql,Mongodb,Nosql,假设我收集了以下文档: { _id, profile: {...}, arrayProp1: [....], arrayProp2: [....], arrayProp3: [....], ... } arrayPropX数组中的对象数可能会变大,至少有数千个。所以我需要使用分页,问题是什么是最好的方法 例如如何返回: 指定id的arrayProp1中的元素总数 指定id的arrayProp1中位置Y的X个元素 ? 同上,但在arrayProp1元素的某些字段上使用过滤

假设我收集了以下文档:

{
  _id,
  profile: {...},
  arrayProp1: [....],
  arrayProp2: [....],
  arrayProp3: [....],
  ...
}
arrayPropX数组中的对象数可能会变大,至少有数千个。所以我需要使用分页,问题是什么是最好的方法

例如如何返回:

  • 指定id的arrayProp1中的元素总数
  • 指定id的arrayProp1中位置Y的X个元素 ?
  • 同上,但在arrayProp1元素的某些字段上使用过滤器?

    您需要两个运算符:和:


    谢谢,它工作得很好,但如果我需要在切片之前对数组进行排序怎么办?如果没有$unwind first,似乎是不可能的?@这是正确的,您必须
    $unwind
    -排序内部数组是我希望在MongoDB中具有的功能之一
    db.collection.aggregate([
        {
            $match: { _id: queryId }
        },
        {
            $project: {
                _id: 1,
                size: { $size: "$arrayProp1" } 
            }
        }
    ])
    
    db.collection.aggregate([
        {
            $match: { _id: queryId }
        },
        {
            $project: {
                _id: 1,
                sliced: { $slice: ["$arrayProp1", Yposition, Xelements] } 
            }
        }
    ])