gpt4 book ai didi

arrays - 获取元素 mongodb 聚合的索引

转载 作者:可可西里 更新时间:2023-11-01 09:38:13 25 4
gpt4 key购买 nike

这是我的收藏

{
"_id" : ObjectId("5c225f9a66d39d55c036fa66"),
"name" : "Sherlock",
"mobile" : "999999",
"adress" : [
{
"street" : "221b baker street",
"city" : "london"
},
{
"street" : "ben street",
"city" : "london"
}
],
"tags" : [
"Detective",
"Magician",
"Avenger"
]
}

现在我想获取地址数组中的第一个或第二个值。为此,我正在使用此命令。

> db.agents.findOne({"name" : "Sherlock"},{"adress" : 1})

但不是给出单个结果,而是给出整个数组,例如

{
"_id" : ObjectId("5c225f9a66d39d55c036fa66"),
"adress" : [
{
"street" : "221b baker street",
"city" : "london"
},
{
"street" : "ben street",
"city" : "london"
}
]
}

可以通过比较数组值来完成

 db.agents.find({"adress.street": "ben street"}, {_id: 0, 'adress.$': 1});

但我不想仅仅为了打印数组索引而进行比较。我怎样才能得到单一的结果?任何帮助表示赞赏..

最佳答案

您可以使用 $arrayElemAt从数组中获取特定元素

db.collection.aggregate([
{ $addFields: { "$arrayElemAt": ["$adress", 0] }} //index
])

如果你想获取切片元素,那么你可以使用 $slice投影

db.collection.find({}, { adress: { $slice: [2, 1] }})  // 2 index and 1 number of element

关于arrays - 获取元素 mongodb 聚合的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53966503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com