展开数组并返回最后一个元素匹配条件

三宝汀

说我有一个看起来像的文档结构

[
    { 
        _id:1,
        Logs : [
            { time: 123, x: 24 },
            { time: 212, x: 13 },
            { time: 325, x: 34 }
        ]
    },
    { 
        _id:2,
        Logs : [
            { time: 63, x: 19 },
            { time: 112, x: 25 },
            { time: 205, x: 15 }
        ]
    }
]

我想要得到的是x其中time<n和_id = y的值

因此,例如,如果y = 2,而n = 115,我希望返回25。

给定time<115,并且最长时间匹配数组中的过滤器?

我要用C#编写,但是如果有人可以帮助,可以从Shell语法转换吗?

谢谢

编辑:

所以我要问的是... $ elemmatch仅在找到一个匹配项时才返回该文档,因此$ elemmatch在时间<115和_id = 2时将返回第二个文档。如果我对数组进行投影,我将获得所有三个Logs子文档。

因此,我假设我需要使用聚合来过滤投影数组?

克列丹

以下汇总将为您提供所需的结果:

db.collection.aggregate([
   {
     "$match": {"_id": y, "Logs.time": {"$lt": n} }
   },
   {
     "$unwind": "$Logs"
   }, 
   {
     "$match": {"Logs.time": {"$lt": n} }
   },
   {
     "$group": {
         "_id": "$_id",
         "x": { "$max": "$Logs.x"  }
     }
   },
   {
     "$project": {
         "_id": 0,
         "x": 1
     }
   }
])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

数组公式以查找最后一个匹配条件

数组匹配scala的最后一个元素

Javascript:函数返回数组的最后一个元素

在React中使用map返回一个等于最后一个元素的数组

Fortran 数组的最后一个元素

数组填充了最后一个元素

数组的最后一个元素

如何仅返回数组的最后一个元素而不获取所有元素

如何返回每个组的最后一个匹配条件行?

OCaml函数返回其最后一个元素与谓词匹配的元组列表

返回数组每个子数组的最后一个非空元素

一旦数组中的最后一个元素满足条件,如何使循环结束?

获取与数组中条件匹配的最后一个值的索引

获取MongoDB中数组的最后一个匹配元素的索引

匹配,更新并返回数组中的最后一个子文档

选择列并在 jsonb 列中只返回满足条件的最后一个元素

如何从满足条件的元组中返回最后一个元素号?

检查数组中的最后一个元素是否符合条件

设置条件时如何获取最后一个元素数组(删除重复数据)

如何返回整数字节数组中的最后一个元素

带for循环的Javascript数组,仅返回最后一个元素

我必须创建一个函数,该函数返回传入的数组的最后一个元素

数组仅返回一个元素

索引匹配(查找符合条件的最后一个值)

模式匹配以查找列表的最后一个元素

golang slice [:]与最后一个元素匹配

最后一个可选元素上的akka路径匹配

在列表的最后一个元素上进行模式匹配

Scala列表匹配最后一个元素