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
}
})
给定文章集合中的以下 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
}
})