mongodb - 不能在嵌套数组中使用 $slice
问题描述
我尝试的是$slice
数组内的数组。
这是我尝试过的,但失败了。
db.collection.find({
name: "admin",
"datasets.name": "test"
},
{
"datasets.$.datapoints": {
$slice: [
0,
3
]
}
})
示例输入数据
[
{
"name": "admin",
"datasets": [
{
"name": "test",
"datapoints": [
1,
6,
4,
3,
8,
5,
3
],
"_id": {
"$oid": "619288f16733758444a28728"
}
},
{
"name": "more datasets",
"datapoints": [
1,
2,
3,
4,
5,
6,
7,
8
],
"_id": {
"$oid": "619289086733758444a2872a"
}
}
]
}
]
游乐场链接:
https://mongoplayground.net/p/pmGpk9jtqZ2
输出应该是:
{ name: "test", datapoints: [1,6,4] }
解决方案
你可以得到你想要的结果
[
{
"_id": ObjectId("5a934e000102030405000000"),
"datasets": [
{
"_id": ObjectId("619288f16733758444a28728"),
"datapoints": [
1,
6,
4
],
"name": "test"
},
{
"_id": ObjectId("619289086733758444a2872a"),
"datapoints": [
1,
2,
3
],
"name": "more datasets"
}
],
"name": "admin"
}
]
和
db.collection.find({
name: "admin",
"datasets.name": "test"
},
{
"datasets.datapoints": {
$slice: [
0,
3
]
}
})
您只需要省略位置运算符。
推荐阅读
- html - 向 Blazor 下拉菜单选项添加样式
- scala - 将 DistributedCache 文件保存在每个节点的磁盘上而不做任何工作
- c++ - 在不破坏现有基类的情况下向具有许多派生类的抽象基类添加新方法
- java - Jackson Json Wrap 现场级别
- html - 为什么 Alegreya 字体在某些浏览器中无法正确显示?
- node.js - 带有客户端加密值的 Mongoose Model.find()
- sqlalchemy - Flask-SQLAlchemy 通过 IAM 连接到 RDS-proxy
- azure - 如何为 Get-AzSubscription 传递特定值
- r - 在 Mambaforge 的 Snakemake 工作流程中使用 R
- angular - 在返回值之前等待 observable 在每个数组中完成