无法使用Meteor 1.2.0.2将Mongodb从3.4版迁移到3.6版

时间:2019-09-02 22:01:14

标签: mongodb meteor angular-meteor

我们需要将当前的Mongodb 3.4迁移到版本3.6,但是建议不起作用。 Mongo说,您需要以聚合方式发送cursor选项,我这样做的方式是:someCollection.aggregate(pipeline,{cursor:{}})。 我们的聚合使用mongodb 3.4可以很好地工作,但是当尝试在3.6中运行它们时,它们将无法工作。 该应用程序是使用Meteor框架1.2.0.2版

编写的

与Mongodb相关的软件包为:

  1. dburles:mongo-collection-instances@0.3.4
  2. minimongo@1.0.10
  3. mongo@1.1.2
  4. mongo-id@1.0.1
  5. mongo-livedata@1.0.9
  6. npm-mongo@1.4.39_1

此示例的管道为:

let pipeline = [
  {$match: {'contractor._id': contractorId, _id: {$ne: apptId}, start: {$lte: appt.start}}},
  {$unwind: '$notes'},
  {$sort: {start: -1, 'notes.creationDate': 1}}
];

以下是我尝试过的选项

#1:

    var result = SalesAppointment.aggregate(pipeline, {cursor: {}});
    return result;

#2:

    var result = SalesAppointment.aggregate(pipeline, {cursor: {}});
    return result.toArray();

#3:

    var result = SalesAppointment.aggregate(pipeline, {cursor: {}});
    return new Promise(function (resolve, reject) {
      resolve(result.toArray());
    });

#4:

    var result = SalesAppointment.aggregate(pipeline, {cursor: {}});
    return new Promise(function (resolve, reject) {
      resolve(result);
    });

#5:

    let rawCol = SalesAppointment.rawCollection();
    let aggregateQuery = Meteor.wrapAsync(rawCol.aggregate, rawCol);
    return aggregateQuery(pipeline, {cursor: {}});

#6:

    var result = SalesAppointment.rawCollection().aggregate(pipeline, {cursor: {}});
    return result;

//结果1到5:所有选项都使应用程序挂起,它永远不会返回return语句,客户端也永远不会解决承诺。

//结果#6:它将没有数据的对象返回到前端,它仅具有以下属性:_visibleState,可读,域,_events,_maxListeners。 在后端,它具有以下方法:解释,获取,获取一个,每个,下一个,关闭,_read。

感谢您的帮助。

0 个答案:

没有答案