有没有办法将数据库查询直接插入服务器端的新MongoDB



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

服务器端是这样的:

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

显然,这是行不通的。但是我正在寻找一种方法来允许将查询从一个数据库插入到新数据库中。

所以我认为这里有两部分你的问题:

  1. 如何连接到另一个 MongoDB 实例?
  2. 如何将一个查询结果中的数据插入到集合中?

对于#1,参考这个SO问题,您可以执行以下操作:

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

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

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

我还稍微修改了您的表查询,因为我认为它在当前表单中不起作用。 您希望查询对象中的每个字段属性位于同一对象中。 请注意,抓取操作将为您提供一个 Table 对象数组,因此您需要让搜索集合中的data字段反映这一点。

最新更新