$slice在mongoDB中的嵌入式文档中不起作用。

我想用 $slice 操作符,返回 newsfeeds 这是我的模式。

...

feeds: {
    shownSize: { type: Number, default: 0 },
    newsSize: { type: Number, default: 0 },
    news: [
      {
        post: ObjectId,
        reason: String,
        score: {
          type: Number,
          default: 0,
        },
      },
    ],
    shown: [
      ObjectId,
    ],
},

...

我执行这个查询 db.users.find({}, {"feeds.news": {$slice: 2}}).pretty(),根据 文件 它应该返回2个第一元素的 news 数组,但是它却返回了整个文档。

我想这是因为我在执行 $slice 操作符,但我不知道如何用另一种方式解决我的问题。

简单地说,我想只返回文件中的前两个元素 news 元素,而不是整个 news 元素。

解决方案:

$slice 只投影数组元素。再用一个外字段的投影来得到单字段。

db.users.find({}, { "feeds": 1, "feeds.news": { "$slice": 2 }}).pretty()

或者你可以明确地删除

db.users.find({}, { "feeds.news": { "$slice": 2 }, _id: 0, otherFields: 0 }).pretty()

给TA打赏
共{{data.count}}人
人已打赏
未分类

Windows上的Apache Camel和Apache FTP服务器 - 找不到 "from "目录。

2022-9-8 0:22:17

未分类

Messenger:如何等待消息处理?

2022-9-8 0:22:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索