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 查找所有对象并将它们保存到数组中的主要内容,如果未能解决你的问题,请参考以下文章
GORM 在 Grails 中使用 MongoDB 按 ID 获取/查找资源
按 ID 查找在 Nodejs MongoDB 中不起作用 [重复]