为什么不是';MongoDB更新是否使用Meteor方法?

为什么不是';MongoDB更新是否使用Meteor方法?,mongodb,meteor,meteor-collections,Mongodb,Meteor,Meteor Collections,我尝试了下面的Meteor方法,但它似乎不起作用。因为当我检查数据库时,我找不到更新的信息 const Employees = new Mongo.Collection("Employees"); Employees.attachSchema(Schemas.Employee, { selector: { type: "fullTime" } }); Employees.attachSchema(Schemas.EmployeeVariant, { selector: { type: "part

我尝试了下面的Meteor方法,但它似乎不起作用。因为当我检查数据库时,我找不到更新的信息

const Employees = new Mongo.Collection("Employees");
Employees.attachSchema(Schemas.Employee, { selector: { type: "fullTime" } });
Employees.attachSchema(Schemas.EmployeeVariant, { selector: { type: "partTime" } });

Meteor.methods({
  "employees/updateTasks": function (employeeId, taskId) {
    this.unblock();

    //the following is printed.
    console.log("employeeId: "+employeeId+" taskId:"+ taskId);
    return Employees.update({_id: employeeId}, 
        {$push: {tasks: taskId}}, 
        {selector: {type: "fullTime"}});
  }
});
这里有什么明显的问题吗

另一个问题是:

有时我看到人们这样使用它:

Employees.update(employeeId,  // not {_id:employeeId}
            {$push: {tasks: taskId}}, 
            {selector: {type: "fullTime"}}); 
这里正在使用它:“

为什么会这样


我的Mongodb版本是3.2.6

事实证明这里使用了收集挂钩()。有一个Employees.before.update方法来检查在“Employees.update”真正发生之前要做什么。

解释了为什么我们可以在更新操作中使用字符串或对象ID作为第一个参数。简单地说:这些选择器将文档与其_id字段中的值相匹配。您要传递给
更新
的第三个参数(
选择器…
)是什么?您是否检查了id是否正确?是的,
选择器:
位没有任何作用。它已更新。我可以通过连接到正在运行的Meteror Mongodb来运行此更新语句。