有没有办法将DB查询直接插入服务器端的新MongoDB?

时间:2016-02-29 14:26:49

标签: mongodb meteor

我要做的是采用用户的查询客户端(通过搜索功能),通过Meteor方法将其发送到服务器,如果有搜索结果,将该查询插入另一个MongoDB实例?我需要这个,以便将用户的搜索结果显示到客户端。

来自服务器端的类似内容:

UserSearch: function(query){

    var init = Table.find({userId: this.userId}, {data: {Name: query}});

    Search.insert({userId: this.userId, data: init});

  },

显然,这不起作用。但我正在寻找一种允许将查询从一个数据库插入新数据库的方法。

1 个答案:

答案 0 :(得分:1)

所以我认为这里有两个问题:

  1. 如何连接到另一个MongoDB实例?
  2. 如何将数据从一个查询结果插入到集合中?
  3. 对于#1,引用this SO question,您可以执行以下操作:

    var database = new MongoInternals.RemoteCollectionDriver("<mongo url>");
    Search = new Mongo.Collection("search", { _driver: database });
    

    对于#2,你只是错过了.fetch(),正如MasterAM所指出的那样:

    UserSearch: function(query){
      var init = Table.find({userId: this.userId, 'data.Name': query}).fetch();
      Search.insert({userId: this.userId, data: init});
    },
    

    我还修改了你的表查询,因为我认为它不适用于当前表单。您希望查询对象中的每个字段属性都在同一个对象中。请注意,fetch会为您提供一个Table对象数组,因此您需要让Search集合中的data字段反映出来。

相关问题