Express / MongoDb 按 ID 查找所有对象并将它们保存到数组中

Posted

技术标签:

【中文标题】Express / MongoDb 按 ID 查找所有对象并将它们保存到数组中【英文标题】:Express / MongoDb find all objects by ID and save them to an array 【发布时间】:2019-03-25 23:43:07 【问题描述】:

我的monongodb架构如下所示:

let statSchema = new mongoose.Schema(
        title: String,
        statId: String,
        stats: 
            likeCount: Number,
            commentCount: Number
        
    );

let MyStat = mongoose.model("MyStat", statSchema);

我正在寻找一种可以从数据库中获取所有statId 元素并将它们放入数组中的方法。

稍后我想使用request(npm 请求)遍历该数组,该数组将获取statId 并从 API 请求 JSON,该 API 将为每个对应的 statId 更新所有 stats(likeCount 和 commentCount) .

如果我使用下面的代码:

MyStat.find(, function(err, foundStats)
    if (err) throw err;
    console.log(foundStats);
  );

它将记录我数据库中的所有元素,但我不知道如何仅访问“statId”。

我尝试使用console.log(foundStats.linkId);,但它返回undefined

【问题讨论】:

Mongoose, Select a specific field with find的可能重复 【参考方案1】:

您的 statId 存储为“_id”。所以如果不显式更改或设置 id 字段,对象的 id 字段会在 '_id' 中找到。

在这种情况下,您可以使用

MyStat.find(, '_id', function(err, foundStats)
    if (err) throw err;
    console.log(foundStats);
);

在“foundStats”中,您将找到所有统计信息的 id。

更多信息请查看mongoose、mongoDB

【讨论】:

【参考方案2】:

foundStats 是一个你需要在其中循环的数组。

foundStats.forEach((element) => 
    console.log(element.statId);
);

如果您想返回 statId,请像这样使用它:

 MyStat.find(, 'statId' , function(err, foundStats)
    if (err) throw err;
    console.log(foundStats);
  );

请参阅文档here

【讨论】:

以上是关于Express / MongoDb 按 ID 查找所有对象并将它们保存到数组中的主要内容,如果未能解决你的问题,请参考以下文章

使用 MongoDB/Mongoose 按 ID 查找提交

GORM 在 Grails 中使用 MongoDB 按 ID 获取/查找资源

按 ID 查找在 Nodejs MongoDB 中不起作用 [重复]

按 ID 查找在 Nodejs MongoDB 中不起作用 [重复]

如何按降序从mongodb集合中查找数据? [复制]

在 Spring Boot Mongodb 中使用聚合框架按计数查找组