MongoDB如何拆分数组内的2个对象?mongoose.find()返回数据处理问题
问题原因
mongoose.find() 方法返回的查询结果data本身就是包含所有匹配文档的数组,你现有代码直接执行posts.push(data)是把整个结果数组作为单个元素插入posts,导致posts变为二维数组,因此posts[0]对应完整的查询结果数组,打印时会输出所有文档。
解决方案
- 如果你需要把查询到的所有文档逐个追加到原有
posts数组中,使用展开运算符拆分data数组后再推入:
const find = Info.find({}).then((data)=> { // 展开data数组,将每个文档作为单独元素推入posts posts.push(...data); console.log(posts[0]) })
- 如果你不需要保留
posts原有内容,直接把查询结果赋值给posts即可:
const find = Info.find({}).then((data)=> { posts = data; console.log(posts[0]) })
- 如果你不想修改现有写入逻辑,也可以直接读取二维数组的第二层第一个元素:
const find = Info.find({}).then((data)=> { posts.push(data); console.log(posts[0][0]) })
内容的提问来源于stack exchange,提问作者Eibona
相关产品推荐
相关产品推荐

