如何在Mongo DB中使用arrayElemAt获取当前文档值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Mongo DB中使用arrayElemAt获取当前文档值相关的知识,希望对你有一定的参考价值。
我有样本数据
instock:[
warehouse: "A", qty: 5 ,
warehouse: "C" ,
warehouse: "B",qty: 6 ,
]
在我的情况下,我有三个数组,我想获取索引1的instock.qty
,该索引为null,但是正在获取值6
而不是null。请让我知道这里出了什么问题
这是我写的查询
db.foo.aggregate([
$project:
qty: $arrayElemAt: [ "$instock.qty", 1]
]);
据我所知,索引qty
中没有1
字段,因此它正在跳过索引1
并转到索引2
。如何解决这个问题。
答案
实际上是具有数组运算符的.dot
语法为您提供了元素数组。您可以检查它为here,因此您将获得第二个第一个元素为6
。
因此,您可以找到第一个数组元素,然后可以使用.dot
语法
db.collection.aggregate([
"$project":
"qty": "$arrayElemAt": ["$instock", 1]
,
"$project":
"qty":
"$ifNull": ["$qty.qty", null]
])
以上是关于如何在Mongo DB中使用arrayElemAt获取当前文档值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中自动增加 mongo db?