javascript - MongoDB - 查询数组的最后一个对象?

标签 javascript arrays mongodb mongodb-query

MongoDB 中是否有任何方法可以在单个数据库查询中专门查询数组中最后一个对象的键值。

例如:这是我的集合中的文档。

{
  "com" : [ 
    { "ts" : 1510830164203, "com" : "com1" }, 
    { "ts" : 1511242569673, "com" : "connected" },
    { "ts" : 1511244832741, "com" : "vb" } 
  ],
  "status" : [ 
    { "ts" : 1510857000000, "stat" : 3 } 
  ] 
}

正如您所看到的,com 中有多个对象。 我如何查询最后一个对象的 ts(timestamp) 或者我想检查最后一个 com 是否插入在今天的日期之间。

我已经经历过这个link.但没有找到合适的解决方案。

如有任何帮助,我们将不胜感激。

最佳答案

您可以使用$arrayElemAt获取最后一个元素,然后在聚合中应用匹配。要使用 $arrayElemAt 获取最后一个元素,请使用第二个值 -1 来指示数组的最后一个元素。 $arrayElemAt: ["arrayName", -1]。代码就像

db.collectionName.aggregate([
  {
    $project: {
      status: 1,
      com: {$arrayElemAt: ["$com", -1]}
    }
  },
  {
    $match: {"com.ts": 15115465465}
  }
])

注意:如果您想比较小于或大于,请使用:$lt、$lte、$gt 或 $gte 您需要的任何一个

$match: {"com.ts": {$lt: 15115465465}}

关于javascript - MongoDB - 查询数组的最后一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47407136/

相关文章:

javascript - Html Canvas 自由变换

javascript - 传递 id 的 Angular 路由不起作用

python - 将元组列表整形为 numpy 中的 MxN 维 ndarray

c - 多维数组,不同方式表示grid[22][0]的地址

node.js - 在 mongodb 上每个集合使用多个模式

node.js - 等待函数,然后控制台结果

javascript - 隐藏递归树中嵌套两次以上的元素

javascript - 使用相对于当前脚本的路径访问文件? ( Node .js)

arrays - 基于ruby中的多个属性从对象数组中删除重复项

node.js - 如何让heroku使用DB的环境配置