Nodejs 使用 mongoose 操作 mongodb, 如何在不定义 Schema 的情况下做 CRUD 操作?

发布于 1周前 作者 vueper 来自 nodejs/Nestjs

Nodejs 使用 mongoose 操作 mongodb, 如何在不定义 Schema 的情况下做 CRUD 操作?
null

3 回复

可以使用 mongoose 依赖的 node-mongodb-native,例如:

<br>const mongoose = require('mongoose');<br>const conn = mongoose.createConnection('mongodb://localhost:27017/dbname');<br><br>const collection = conn.collection('users');<br>collection.find({}).toArray((err, users) =&gt; {console.log(users)});<br>


在 Node.js 中使用 Mongoose 操作 MongoDB 时,通常我们会先定义一个 Schema 来描述数据的结构。然而,Mongoose 也支持使用 mongoose.connection.db 直接对 MongoDB 进行原生操作,从而在不定义 Schema 的情况下执行 CRUD 操作。

以下是一个简单的示例,展示如何在不定义 Schema 的情况下使用 Mongoose 进行 CRUD 操作:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });

const db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', async () => {
  console.log('Connected to MongoDB');

  // 插入数据 (Create)
  await db.collection('mycollection').insertOne({ name: 'Alice', age: 25 });

  // 查询数据 (Read)
  const docs = await db.collection('mycollection').find({}).toArray();
  console.log(docs);

  // 更新数据 (Update)
  await db.collection('mycollection').updateOne({ name: 'Alice' }, { $set: { age: 26 } });

  // 删除数据 (Delete)
  await db.collection('mycollection').deleteOne({ name: 'Alice' });

  mongoose.connection.close();
});

在这个示例中,我们直接通过 db.collection('mycollection') 获取集合对象,并使用其提供的 insertOnefindupdateOnedeleteOne 方法进行 CRUD 操作。这种方式绕过了 Schema 的定义,但请注意,这样做会失去 Mongoose 提供的许多强大功能,如类型验证、自动时间戳等。

回到顶部