Meteor JS如何从集合中的数组中获取特定对象?

Posted

技术标签:

【中文标题】Meteor JS如何从集合中的数组中获取特定对象?【英文标题】:Meteor JS how to get specific object from array from collection? 【发布时间】:2019-11-20 23:10:17 【问题描述】:

我正在尝试从 items 数组中获取特定的对象值。我通过将新项目推入项目数组来更新数组,然后我想从数组中获取最后更新的项目。我有上次更新并使用此查询的项目的 _id,但它返回包含所有项目的完整记录。

 let repData = Items.findOne('_id': rid, 'items._id': newRepId , "items.$": 1 );

 
"errorCode": false,
"data": 
    "_id": "NhNpaN8EHn6uJXfg5",
    "cText": "Let me know you views",
    "aId": "YxEjFqsE3czZZJvgP",
    "cId": "EwDS5iYSEuGThHE38",
    "datePosted": "2019-07-11T07:13:59.177Z",
    "items": [
        
            "reText": "pppppp sssssssss",
            "reOwn": "FK7KQ7eMs7QvX5uHh",
            "datePosted": "2019-07-11T07:19:17.722Z",
            "_id": "b87e532807ce37ff83d37a09"
        ,
        
            "reText": "bbbbbb vvvvvvvv",
            "reOwn": "FK7KQ7eMs7QvX5uHh",
            "datePosted": "2019-07-11T07:22:36.089Z",
            "_id": "28d2bf66a517bfcfaa0fabca"
        ,
        
            "reText": "mmmmmnnnnnn bbbbbbvvvvv",
            "reOwn": "FK7KQ7eMs7QvX5uHh",
            "datePosted": "2019-07-11T07:23:20.587Z",
            "_id": "85f52e3e3a8ae6d18e98dbb2"
        ,



 

【问题讨论】:

类似问题:***.com/questions/28680295/… 【参考方案1】:

Mongo 搜索将始终为您提供完整的记录,您可以限制您获取的元素,但您不能过滤 items 数组,您必须在之后执行此操作,如下所示:

  const lastItem = repData.items
    .sort((a, b) => new Date(a.datePosted)-new Date(b.datePosted))
    .pop()
  console.log(lastItem)

基本上它按日期对数组进行排序(也许没有必要),然后将最后一个元素弹出到lastItem

【讨论】:

我已经用forEach函数整理出来,然后匹配id

以上是关于Meteor JS如何从集合中的数组中获取特定对象?的主要内容,如果未能解决你的问题,请参考以下文章

Meteor - 如何在特定时间段后从服务器端方法中自动从集合中删除单个项目?

如何将所有 Meteor Mongo 集合名称检索为 Javascript 数组?

Meteor - 如何在 MongoDB 集合中查找/获取对象并使用方法将其推送到另一个集合中?

如何在 javascript (meteor.js) 中操作返回的 mongo 集合/游标?

Discord.js 集合;如何从集合中的数组中导航和抓取/计数对象

Meteor / MongoDB - 如何证明数组中的任何项目是不是等于特定值,而不是在“真”的情况下从另一个数组中提取项目?