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

标签 arrays database mongodb mongodb-query aggregation-framework

这是我的收藏

{
        "_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/

相关文章:

c - 结构帮助。将卡片结构分配给甲板结构中保存的卡片数组

javascript - 如何通过高地从远程 JSON 数组创建对象流?

arrays - 如何确定 C 中数组的大小?

php - 如何减小数据库大小?

PHP PDO。查询正确时的错误号 '00000'

mongodb - 考虑到新的索引交集功能,复合索引何时在 MongoDB 2.6 中仍然相关?

C++ 结构指针和内存泄漏

mysql - 如何找到给定数字频率的中位数?

node.js - Mongoose 嵌套模式与嵌套模型

mongodb - Mongoose 会给 node-mongodb-native 驱动程序增加多少开销?