将 mongoose 与预先存在的 mongo 集合连接

Posted

技术标签:

【中文标题】将 mongoose 与预先存在的 mongo 集合连接【英文标题】:interfacing mongoose with a preexisting mongo collections 【发布时间】:2013-07-01 13:50:27 【问题描述】:

我已经查了一段时间了,我被卡住了。我还提到了this 问题和this 问题并尝试了它,但我无法让它运行。

这是我的项目的简要概述: 我有一个 python 脚本,每天从服务器上的一些日志中解析数据。每个日志都是一个 python 对象,它存储在一个集合中,在 mongoDB 的 db 'stabilitylogs' 中具有相应的日期。

我现在已经安装了节点和猫鼬,我正在尝试从名为 - 130702 的特定集合中提取此数据。我收到以下错误:

C:\node_app\node_modules\mongodb\lib\mongodb\connection\server.js:570

抛出错误; ^ ReferenceError: 架构未定义

我的 stablelog.js 看起来像这样:

            var mongoose = require('mongoose');
            mongoose.connect('mongodb://localhost/stabilitylogs');

            var db = mongoose.connection;
            db.on('error', console.error.bind(console, 'connection error:'));
            db.once('open', function callback () 
                var rackSchema=new Schema(
                    _id: type: String ,
                    Headend:
                        Name: String,
                        Rack: 
                            TestInfo:
                                ScriptStart: String,
                                TotalReboots: String,
                                ScriptLoopCount: String,
                                ScriptName: String,
                                ScriptStop: String,
                                SystemName: String,
                                TotalSTBs: String,
                                PerReboots: String,
                                RunTime: String,
                                BuildVer: String
                                ,
                            StbData: [
                                Status: String,
                                UpTime: String,
                                DBType: String,
                                IP: String,
                                DBVersion: String,
                                RebootData: String,
                                MAC: String,
                                MWApp: String,
                                OS: String
                                ,],
                            Number: String
                            
                        
                    ,
                collection: '130702');

                var doc = mongoose.model(rackschema, '130702');
                doc.find();
                );

我对此真的很陌生,并且确定我的代码中有很多错误,但我真的需要一些帮助。 我正在使用 MSI 安装程序和 nodeJS - v0.10.12 在 Windows 7 上运行我的整个应用程序 - 安装了 mongodb ver2.2.4。我通过编写 package.json 文件使用 npm install 安装了 mongodb 和 mongoose 模块。

非常感谢任何帮助。另外,如果需要更多信息,请告诉我。

【问题讨论】:

尝试new mongoose.Schema 而不是new Schema @JohnnyHK:谢谢。它似乎仍然无法正常工作! :// 【参考方案1】:

除非您的文件中已经有var Schema = mongoose.Schema;,否则您需要像JohnnyHK 所说的那样使用new mongoose.Schema。此外,如果您希望查询立即执行,猫鼬模型上的 find method 应该看起来像这样。

doc.find(, function(err,collection) 
//do something with the collection
);

【讨论】:

这似乎不起作用。 :( 我尝试检查它是否能够从数据库中提取数据。我得到一个“0”作为集合的长度,即使它不是空的。我哪里出错了?var MongoClient = require('mongodb').MongoClient; //connect to db MongoClient.connect("mongodb://localhost:27017//test", function(err, db) if(!err) console.log("we are connected"); var collection = db.collection('movies'); collection.find().toArray(function(err, items) console.log(items.length);); ); 抱歉格式化!我不知道如何正确编辑它。

以上是关于将 mongoose 与预先存在的 mongo 集合连接的主要内容,如果未能解决你的问题,请参考以下文章

如何使用已存在的Mongo连接配置Mongoose

使用Mongoose(ORM)将多个应用程序与一个mongo数据库连接

通过 mongoose 将项目插入 mongo 数组

Mongo基础使用,以及在Express项目中使用Mongoose

将 Mongo/Mongoose 对象保存在另一个模型中

Mongoose TypeScript 聚合:在类型“任何 []”上不存在