Meteor 如何在属于外部文档的数组中更新文档?

Meteor 如何在属于外部文档的数组中更新文档?,meteor,minimongo,Meteor,Minimongo,我有以下文件: mainDoc = { owner: Meteor.userId(), createdOn: new Date(), active: false, label: "Dashboard #" + ($("ul#u-nav-tabs").find("li.u-tab").length + 1), monitors: [/*Embedded documents*/], sharewith:

我有以下文件:

mainDoc = {
        owner: Meteor.userId(),
        createdOn: new Date(),
        active: false,
        label: "Dashboard #" + ($("ul#u-nav-tabs").find("li.u-tab").length + 1),
        monitors: [/*Embedded documents*/],
        sharewith: []
    };
mainDoc.monitors
是以下文档的数组:

innerDoc = {
                _id: id._str,
                owner: Meteor.userId(),
                createdOn: new Date(),
                label: monitorLabel,
                metadata: {custDate: {}},
                style: {
                    top: mystyle.top,
                    left: mystyle.left,
                    width: 0,
                    height: 0
                },
                shown: true,
                sharewith: []
            }
我已在服务器上设置了以下权限

userDashboards.allow({
    insert: function (userId) {
        "use strict";
        return userId;
    },
    update: function (userId, doc) {
        "use strict";
        return doc.owner === userId;
    },
    remove: function (userId, doc) {
        "use strict";
        return doc.owner === userId;
    },
    fetch: ["owner", "monitors"]
});
到目前为止,我在客户身上尝试过:

console.log(userDashboards.findOne({"monitors._id": "5f94f2a15bddd908f2bc9d5d"}));
但我只得到完整的文档,而不是嵌入的文档

所以问题是,如何直接从浏览器更新
innerDoc.style

试试这个

更新

userDashboards.update({_id:"5f94f2a15bddd908f2bc9d5d"},{$set:{'monitors[0]._id':"yeaaa look mom im editing documents with arrays"}})
假设“5F94F2A15BDD908F2BC9D5D”是它的
。\u id
不是
监视器。\u id.
就像你说的监视器是一个数组,所以你应该指定索引aka[0]。 记住,更新的语法应该是这样的

    Collection.update({_id:idDocument},{$set:{fieldToUpdate:newData}}) // correct

Collection.update({_id:idDocument,$set:{fieldToUpdate:newData}}) // wrong, you will get some "stack error" 

Collection.update({$set:{fieldToUpdate:newData}}) // wrong, you need to specify what document will be update and by stric the id should be always {_id:"5f94f2a15bddd908f2bc9d5d"} <-- like this
Collection.update({u id:idDocument},{$set:{fieldToUpdate:newData}})//正确
update({{u id:idDocument,$set:{fieldToUpdate:newData}}})//错误,您将得到一些“堆栈错误”

Collection.update({$set:{fieldToUpdate:newData}}})//错误,您需要指定要更新的文档,并且通过stric,id应始终为{{u id:“5F94F2A15BDD908F2BC9D5D”}嘿@Ethaan!我还是有点问题,我在[here][1]中找到了部分解决方案,但现在我在如何允许更新该集合方面遇到了问题:-(我得到此错误:未捕获错误:不允许。不受信任的代码只能通过ID更新文档。[403][1]当前位置它帮助了我,我有另一个问题,我用你的solution@juanp_1982,我对答案进行了修改和更新,只是为了让它更清楚