如何在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]
    
  
])

MongoPlayground

以上是关于如何在Mongo DB中使用arrayElemAt获取当前文档值的主要内容,如果未能解决你的问题,请参考以下文章

我如何使用like运算符在mongo db中查询[重复]

如何在 Mongo-DB 中删除多级引用模式

如何在 Spring Boot 中自动增加 mongo db?

从 $arrayElemAt 结果中选择字段

如何从 mongo db 获取详细信息并在 nodejs Fork 方法中发送或存储在对象中

如何从 mongo db 获取详细信息并在 nodejs Fork 方法中发送或存储在对象中