2

我正在尝试将 Node/Express 服务器连接到现有的 MongoDB 数据库/集合。我已经成功连接到数据库。但是,我在设置要查询的模型/模式时遇到了极大的困难。

MongoDB 是 MongoDB Atlas,拥有一个包含超过 800,000 个文档的集合。单个集合的名称是“delitosCollection”。

我尝试了以下但没有成功:

var CrimeData = mongoose.model('DelitosCollection', new Schema({}),'delitosCollection');


mongoose.connection.on('open', function(ref){
    console.log("connected to the mongo server");

   CrimeData.find({}, (err,results) => {
       if(err){
           console.log("ERROR")
           throw err
       }
       console.log("results: ", results.length)
   } )
});

我知道连接正常,因为我收到了没有错误的 console.log。但是,results.length 在应该超过 800,000 时返回 0。在这上面花了太多时间。

4

3 回答 3

1

您可以参考下面给出的答案,只需在 db.model('users', new Schema({})) 这样的架构中传递一个空对象

于 2020-03-21T12:15:25.470 回答
1

为您要使用的每个集合创建一个空模式,然后创建一个模型以在您的项目中使用该模型采用 3 个参数 1)模型的名称 2)模式名称 3)集合名称(来自 mongodb 图集)

像那样

const mongoose = require('mongoose');
mongoose.connect('mongodb uri')
const userSchema = new mongoose.Schema({});
const User = mongoose.model('User', userSchema, 'user');

那么就可以正常使用模型了

User.find({})
于 2020-06-30T22:44:49.867 回答
0

连接到 mongo 数据库

// Connect to mongoDB
mongoose.connect('mongodb://localhost/[yourDbName]',{useNewUrlParser:true})
    .then(function(){
        console.log('mongoDB connected');
    })
    .catch(function(){
        console.log('Error :');
    }) 

之后,您将必须创建您的架构,然后只有您可以查询数据库

像这样创建您的架构

// Crimes Schema 
const CrimeDetailsSchema= new Schema({
    first_name: {
        type: String,
        required: true
    },
    last_name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    }

});

const Profile = module.exports = mongoose.model('delitosCollection', CrimeDetailsSchema, 'delitosCollection');

之后创建您的查询

您可以在此处的 mongoose 文档中对此有所了解

于 2019-01-07T01:33:59.813 回答