Why is this error occurring: MongoServerError: unknown operator: $slice

Why is this error occurring: MongoServerError: unknown operator: $slice

给定文章集合中的以下 JSON:

[
  {
    _id: 1,
    description: 'DESCRIPTION ARTICLE AB',
    article_code: 'AB',
    purchase: [
      { company: 1, cost: Decimal128("80.010000") },
      { company: 2, cost: Decimal128("85.820000") },
      { company: 3, cost: Decimal128("79.910000") }
    ],
    stock: [
      { country: '01', warehouse: { code: '02', units: 10 } },
      { country: '02', warehouse: { code: '02', units: 8 } }
    ]
  },
  {
    _id: 2,
    description: 'DESCRIPTION ARTICLE AC',
    article_code: 'AC',
    purchase: [
      { company: 1, cost: Decimal128("90.010000") },
      { company: 2, cost: Decimal128("95.820000") },
      { company: 3, cost: Decimal128("89.910000") }
    ],
    stock: [
      { country: '01', warehouse: { code: '01', units: 20 } },
      { country: '02', warehouse: { code: '02', units: 28 } }
    ]
  }
]

我正在尝试为 $slice 获取正确的语法,但是这个命令:

db.articles.find({"stock.country": '01', "stock": {$slice: 1}})

产生此错误消息:

MongoServerError: unknown operator: $slice

使用 $slice 仅获取股票数组的第一个元素的正确语法是什么?

$slice 是投影运算符(或聚合表达式,但在这种情况下我们不使用聚合管道)。

这意味着您需要在投影部分使用它,而不是命令的查询部分。

db.collection.find(
   <query>,
   { <arrayField>: { $slice: <number> } }
);

或专门为您准备的:

db.collection.find({
  "stock.country": "01"
},
{
  stock: {
    $slice: 1
  }
})

Mongo Playground