📜  如何投影特定字段 mongodb nodejs - Javascript (1)

📅  最后修改于: 2023-12-03 15:09:09.367000             🧑  作者: Mango

如何投影特定字段 MongoDB Node.js

当我们从 MongoDB 数据库中检索文档时,有时我们只需要获取文档中的某些字段并忽略其他字段。这可以通过“投影”操作轻松完成。在本文中,我们将探索如何在 Node.js 中使用 Mongoose 投影特定字段。

安装 Mongoose

首先,我们需要安装 Mongoose。可以通过以下命令进行安装:

$ npm install mongoose
创建连接

在我们开始投影操作之前,我们需要连接到 MongoDB 数据库。可以使用以下代码进行连接:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/myapp', { useNewUrlParser: true })
  .then(() => console.log('Database connected'))
  .catch(err => console.error('Connection error', err));

此代码将使用默认端口(27017)连接到名为“myapp”的本地 MongoDB 数据库,并在连接时输出“Database connected”。

创建模型

在进行投影操作之前,我们还需要定义我们的模型。我们将为此创建一个基本模型。该模型将具有以下架构:

const userSchema = new mongoose.Schema({
  name: String,
  email: String,
  password: String,
  age: Number,
});

const User = mongoose.model('User', userSchema);
投影字段

假设我们有以下文档:

{
  "_id": "5fa56e66d06c28cfe98c3a57",
  "name": "John Doe",
  "email": "john.doe@example.com",
  "password": "password123",
  "age": 28,
  "__v": 0
}

如果我们只想获取“_id”、“name”和“email”字段,可以使用以下代码:

User.find({}, '_id name email', function(err, users) {
  if (err) throw err;
  console.log(users);
});

此代码将输出具有以下字段的文档数组:

[
  {
    "_id": "5fa56e66d06c28cfe98c3a57",
    "name": "John Doe",
    "email": "john.doe@example.com",
  }
]
排除字段

如果我们想要获取除“password”字段以外的所有字段,可以使用以下代码:

User.find({}, '-password', function(err, users) {
  if (err) throw err;
  console.log(users);
});

此代码将输出具有以下字段的文档数组:

[
  {
    "_id": "5fa56e66d06c28cfe98c3a57",
    "name": "John Doe",
    "email": "john.doe@example.com",
    "age": 28,
    "__v": 0
  }
]
结论

投影操作允许我们轻松地仅从 MongoDB 文档中获取所需的字段。使用 Mongoose,我们可以轻松地进行投影操作,仅仅是提供要获取或排除的字段名称。

参考