首页 文章

具有Node Js的Mongodb

提问于
浏览
0

如何通过节点js(mongoose)执行此mongodb查询 . 我有两个表格与下面的模式,我想从用户表中获取用户名和密码,并从信息表中获取全名 .

var infoSchema = mongoose.Schema({khatam_id:String,user_id:String,fullname:String,});

var usersSchema = mongoose.Schema({user_id:String,username:String,password:String,});

4 回答

  • 0

    在你的机器上安装mongoose

    npm install mongoose
    

    import mongoose lib

    const mongoose = require('mongoose');
    const Schema = mongoose.Schema, ObjectId = Schema.ObjectId;
    

    连接到mongodb并为您的表创建模式

    mongoose.connect('mongodb://localhost/myappdatabase');
    
    const usersSchema = new Schema({
     _id: ObjectId,
     user_id: String,
     username: String,
     fullname: String
    });
    
    const Users = mongoose.model('Users', usersSchema );
    

    使用mongo查询从“用户”表中查找用户

    Users.find({<here you can write your mongo query>}, function (err, docs) {
      // docs.forEach
    });
    
  • 0

    你必须使用聚合

    db.users.aggregate([
    {
       $lookup:
         {
           from: "info",
           localField: "user_id",
           foreignField: "_id",
           as: "userInfo"
         }
    },
    { "$unwind": "$userInfo" },
    ])
    
  • 0

    我不知道你是不是很热门,但如果你是你可以使用它 .

    userSchema.virtual('infos', 
     {
       ref: 'Info',
       localField: 'user_id',
       foreignField: 'user_id',
     })
    

    假设您将infoSchema命名为Info模型,mongodb将其转换为infos,以防您不知道为什么虚拟字段将被称为infos ref . 显然,对Info模型的引用localField是引用userSchema唯一ID的字段, foreignField是你在infoSchema中引用的字段,它匹配你提到的localfield的唯一值 . 最后,与userSchema中的所有字段一起添加此项

    {
    toJSON: { virtuals: true },
    toObject: { virtuals: true },
    }
    

    所以,当你查询用户给它一个镜头它真的派上用场 . 注意:它实际上并没有在数据库中创建一个字段(虚拟duh . )它只是填充你的响应对象以进行前端渲染,这实际上更好 .

  • 0

    连接到MongoDB:确保在程序执行之前运行MongoDB服务 .

    var mongoose = require("mongoose");
        mongoose.connect("mongodb://localhost:27017/your-database");
        mongoose.Promise = global.Promise;
        var connection = mongoose.connection;
        connection.once('open', function() {
           console.log('connected to database);
    
        });
    
        connection.on('error', function() {
          console.error('Mongoose connection error");
    
         });
        process.on('SIGINT', function() {
           mongoose.connection.close(function() {
           console.log('Mongoose connection disconnected due to app SIGINT.');
         });
    
       });
    

    创建用户架构:

    const Schema = mongoose.Schema;
        const usersSchema = new Schema({
         user_id: String,
         username: String,
         fullname: String
        });
    
      const Users = mongoose.model('Users', usersSchema );
    

    像这样运行Query:

    Users.findOne({query})
        .then(function(user){
          // do something
         })
        .catch(function(err){
          // handle error
         })
    

相关问题