【问题标题】:Mongoose Schema for remote MongoDb用于远程 MongoDb 的 Mongoose Schema
【发布时间】:2014-12-02 07:29:15
【问题描述】:

我已经打开了到我的远程 mongodb ec2 实例的连接,但现在我正在尝试检索嵌套在集合中的数据。该数据库有多个集合(即访问者、活动、表单等),并且其中已有来自其他来源的数据。我正在为应用程序使用 node + express。

1) 我是否必须在我的应用程序中定义一个架构以匹配远程数据库,或者我可以只查询数据并将其存储在一个对象中吗? mongoose schema creation

2) 实际上检索访问者集合中的值,我可以使用点符号在visitor 集合中查询visitor_id,使用:

db.find(visitor.visitor_id)  

如果有帮助,这是我正在使用的数据库连接代码

var uri = 'mongodb://xx.xxx.xx.x'
var mongoOptions = { db: { safe: true } };
  db = mongoose.createConnection(uri, mongoOptions, function (err, res) {
if (err) {
    console.log('ERROR connecting to: remote' + uri + '. ' + err);
} else {
    console.log('Successfully connected to: remote' + uri);
   }
});

【问题讨论】:

    标签: javascript node.js mongodb amazon-ec2 mongoose


    【解决方案1】:
    1. 如果您使用的是 mongoose,那么是的,您需要在您的应用中定义一个架构以匹配数据库。
    2. 这种表示法不起作用。如果我了解您尝试进行的特定查询(以获取与visitor_id 匹配的文档),那么您将需要大致如下:

      // Assuming you already have mongoose connected to the database elsewhere
      var mongoose = require('mongoose');
      var Schema = mongoose.Schema;
      var visitorSchema = new Schema({
          visitor_id: Number,
          etc: etc // the rest of your schema
      });
      var Visitor = mongoose.model('Visitor', visitorSchema);
      
      Visitor.findOne({ visitor_id: the_id_you_want_to_query }, function (err, doc) {
          // doc contains the visitor document, if found
      });
      

    我建议您熟悉使用 MongoDB 尤其是 mongoose 的查询 - docs 不是很容易理解,但涵盖了大多数主要情况。

    【讨论】:

    • 感谢 Jorge,这有助于澄清一些事情。如果我想查询整个数据库并且只返回那些有一个 visit_id != null 的数据库(大多数是 null,而其他的有一个唯一的 id),它会如何改变。
    • 查询非空值有点乱。一种方法是使用$type 操作符——这个页面应该有帮助:docs.mongodb.org/manual/faq/developers/…
    猜你喜欢
    • 2018-03-15
    • 2018-12-30
    • 2021-05-06
    • 1970-01-01
    • 2017-04-29
    • 2020-06-17
    • 1970-01-01
    • 2020-10-20
    • 2020-09-15
    相关资源
    最近更新 更多