使用$ slice时使用数组长度

时间:2019-09-02 21:40:03

标签: mongodb mongoose

是否可以获取数组posts的长度并将其用于$slice操作中?

  Feed.find(
                { owner: { $in: joinedFeeds } },
                { posts: { $slice: [<length>, fetcher] } }
              )

我的目标是每次调用路线时获取一定数量的帖子。所以,我想取数组的最后一块

1 个答案:

答案 0 :(得分:0)

这是我收藏的数据:

db.test.insert([
{ "_id" : 1, "item" : "ABC1", "description" : "product 1", colors: [ "blue", "black", "red" ] ,'fav':["1","2"]},
{ "_id" : 2, "item" : "ABC2", "description" : "product 2", colors: [ "purple" ],'fav':[] }
])

请检查以下查询,该查询将基于该记录的“收藏”数组的长度从“颜色”数组中获取元素。

db.test.aggregate([
   {
      $project: {
         finalTotal: {
            $let: {
               vars: {
                  numberOfColors: { $cond: { if: { $isArray: "$fav" }, then: { $size: "$fav" }, else: "NA"} }
               },
               in: { $slice: [ "$colors", "$$numberOfColors" ] }
            }
         }
      }
   }

] )

请告诉我这是否有帮助,以及如果您在实施该方法时遇到任何问题。