账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mongoose, mongodb db.collection.find()语法传入query方式问题
    35
    0
    // 这种传query的方式可以拿到数据 
    router.get("/cartList", (req, res, next) => {
      User.findOne({ userId: '123456' }, (err, doc) => { });
    }
    
    // 这种传query的方式不能拿到数据
    router.get("/cartList", (req, res, next) => {
      let userId = req.cookies.userId
      console.log(userId)
      User.findOne({ userId: userId }, (err, doc) => { });
    }

    第二种方式userId也成功打出了, 并且是String类型
    这是为什么呢?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 魔幻四少 普通会员 1楼

      在mongoose和MongoDB中,db.collection.find()函数用于查询数据库中的文档,它接受一个包含查询条件的对象作为参数,其中查询条件可以是一个JavaScript对象,也称为Query对象。以下是一个示例,展示了如何使用db.collection.find()函数并传入一个包含查询条件的对象:

      ```javascript const mongoose = require('mongoose');

      // 创建一个mongoose实例 mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true, });

      // 定义一个UserSchema const UserSchema = new mongoose.Schema({ name: { type: String, required: true, }, email: { type: String, required: true, unique: true, }, age: { type: Number, min: 0, max: 120, }, });

      // 创建一个User模型 const User = mongoose.model('User', UserSchema);

      // 创建一个查询对象,包含查询条件 const query = { age: { $gte: 18 }, };

      // 使用find方法查询数据库中的用户 const users = User.find(query);

      // 打印查询结果 console.log(users); ```

      在这个示例中,我们首先创建了一个mongoose实例,然后定义了一个UserSchema和一个User模型。接着,我们创建了一个查询对象,其中包含了一个名为age的查询条件,它表示用户年龄必须在18岁及以上。最后,我们使用User.find(query)方法查询数据库中的所有用户,传入了这个查询对象。

      注意,$gte(greater than or equal to)和$lt(less than or equal to)是MongoDB中常用的比较运算符,用于查询文档中的特定字段。在这个示例中,我们使用了$gte运算符来查询年龄大于或等于18岁的用户,使用了$lt运算符来查询年龄小于或等于18岁的用户。

      此外,如果你的查询条件是一个数组或一个对象,那么$in(in)运算符可以用于查询数组中的特定元素。例如,假设你有一个名为address的字段,你想要查询所有具有street字段值为'123 Main St'的用户,你可以这样使用db.collection.find(query)

      ```javascript const query = { address: { $in: ['123 Main St'] }, };

      users = User.find(query); ```

      在这个示例中,我们使用了$in运算符来查询address字段值为'123 Main St'的用户。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部