【问题标题】:MongoDB Projection vs For LoopsMongoDB 投影与 For 循环
【发布时间】:2026-01-22 00:00:02
【问题描述】:

我想通过一些逻辑从我的 mongo 数据库中访问一些数据并返回某些键的值。 例如,让用户数据是这样的。

[
  {
   "_id": 1,
   "name":"abc",
   "age":"25",
   "sport":"football"
  },
  {
   "_id": 2,
   "name":"def",
   "age":"18",
   "sport":"boxing"
  },
  {
   "_id": 3,
   "name":"ghi",
   "age":"22",
   "sport":"cricket"
  },
 ]

现在我只想返回姓名和年龄值。

第一种方法,

const users = await this.User.find({});
let userList = [];

        for (let i = 0; i < users.length; i++)
        {
            let user = users[i];

            let t =
            {
                name : user.name,
                age: user.age
            }

            userList.push(t);
        }   

return userList;

第二种方法,

    const users = await this.User.find({}, {"name":1, "age":1, _id:0, 
    "sport":0});

    return users;

那么,如果我们忽略代码中的行数,哪个实现更好,为什么?

【问题讨论】:

    标签: node.js mongodb nestjs projection


    【解决方案1】:

    第二种方法更好,因为您可以节省时间和内存。当您使用 for 循环时,需要更多时间。当您在userList 中保存用户时,您也会复制您的数据。所以它需要更多的时间和内存。

    【讨论】: