📜  mongoose | where()函数(1)

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

Mongoose | where()函数

在使用 Mongoose 操作 MongoDB 数据库时,我们需要使用 where() 函数来构建查询语句。where() 函数可以帮助我们过滤数据,使查询更加准确。

基本用法

where() 函数可以用来构建查询条件,接受一个对象作为参数。对象的属性名是要查询的字段,属性值是要查询的条件。

以下是一个简单的例子,查询 username 字段为 "john" 的数据:

const User = require('./models/user');

User.where({ username: 'john' })
  .find()
  .exec((err, result) => {
    // 处理查询结果
  });

在上面的例子中,我们使用 where() 函数构建了一个查询条件,然后调用 find() 函数来查询满足条件的数据。执行查询的结果会保存在 result 变量中。

复合条件查询

如果需要设置多个查询条件,可以在 where() 函数中传入一个对象。对象的键名是查询字段,键值是一个查询条件对象,其中可以使用 $gt$lt$in 等操作符来设置不同的条件。

以下是一个例子,查询年龄在 18 到 30 之间、城市为北京或上海的用户:

User.where({
  age: { $gt: 18, $lt: 30 },
  city: { $in: ['北京', '上海'] }
})
.find()
.exec((err, result) => {
  // 处理查询结果
});
使用正则表达式查询

如果要在查询中使用正则表达式,可以使用 RegExp 对象来匹配字符串。

以下是一个例子,查询名字以 "j" 开头的用户:

User.where({ name: new RegExp('^j', 'i') })
  .find()
  .exec((err, result) => {
    // 处理查询结果
  });

在上面的例子中,使用了一个正则表达式来匹配名字以 "j" 开头的用户。^j 表示以 "j" 字母开头,i 表示不区分大小写。

使用回调函数查询

除了使用 exec() 函数来查询数据,还可以使用回调函数查询。

以下是一个例子,查询年龄大于 18 岁的用户:

User.where('age').gt(18).exec((err, result) => {
  // 处理查询结果
});

在上面的例子中,使用 gt() 函数来设置查询条件,查询年龄大于 18 岁的用户。

使用 Promise 查询

除了使用回调函数,还可以使用 Promise 对象来查询数据。在这种情况下,我们需要使用 then()catch() 方法来处理查询结果。

以下是一个例子,查询名字为 "john" 的用户:

User.where({ name: 'john' })
  .find()
  .then((result) => {
    // 处理查询结果
  })
  .catch((err) => {
    // 处理查询错误
  });

在上面的例子中,使用 then() 方法来处理查询结果,使用 catch() 方法来处理查询错误。

总结

where() 函数是 Mongoose 中用来构建查询条件的方法,它可以用来设置查询条件和过滤数据。在实际开发中,我们需要根据具体的业务需求来使用 where() 函数查询数据。