FOR循环中如何为MongoDB返回数组内的对象添加新属性字段?
问题原因
你尝试的push、add都是数组操作方法,而你的需求是给数组内的对象新增属性,另外如果你用的是Mongoose查询,默认返回的是Mongoose文档实例,不是普通JS对象,直接赋值新属性不会生效。
解决步骤
(可选但推荐优化)将查询全量文档的逻辑改为直接查计数,减少数据库IO开销:
把你现有的MatchRegister.find(...)改为MatchRegister.countDocuments(...),删除后续的select、sort逻辑,直接返回符合条件的条目数量,不需要获取完整文档列表。在你标注的
// 我希望在这里将查询结果长度插入到当前对象中位置,添加如下代码:
// 如果查challengeList的时候加了.lean(),返回的是普通JS对象,直接赋值即可 challengeList[i].Count = countOfCurrentChallengeMatches.length; // 如果是Mongoose文档实例,没有加.lean(),用下面两种方式二选一: // 方式1:用set方法给文档加属性 // challengeList[i].set('Count', countOfCurrentChallengeMatches.length); // 方式2:转成普通JS对象后再加属性 // challengeList[i] = challengeList[i].toObject(); // challengeList[i].Count = countOfCurrentChallengeMatches.length;
- 如果你后续还要序列化
challengeList返回给前端,建议你在最开始查询challengeList的语句末尾添加.lean(),直接返回普通JS对象,后续修改属性会更方便。
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

