在mongodb中插入嵌套数组?

在mongodb中插入嵌套数组?,mongodb,meteor,multidimensional-array,mongodb-query,Mongodb,Meteor,Multidimensional Array,Mongodb Query,我使用的是mongodb文档,其中插入了以下代码: Poll_Coll.insert({question:quest,option1:[{pd:op1,ids:[]}], option2:[{pd:op2,ids:[]}], option3:[{pd:op3,ids:[]}], option4:[{pd:op4,ids:[]}]}); 我想更新选项1.ids数组中的多个ID,我尝试这样做: Polls_Coll.update({_id:"xxxx

我使用的是mongodb文档,其中插入了以下代码:

Poll_Coll.insert({question:quest,option1:[{pd:op1,ids:[]}],
        option2:[{pd:op2,ids:[]}],
        option3:[{pd:op3,ids:[]}],
        option4:[{pd:op4,ids:[]}]});
我想更新
选项1.ids
数组中的多个ID,我尝试这样做:

Polls_Coll.update({_id:"xxxx","option1.pd":"xxx"},{$push:{"option1.$.ids":6}});
Polls_Coll.update({_id:"xxxxx","option1.pd":"xxx"},{$push:{"option1.$.ids":{id:"ya"}}});
选项1.pd工作正常。我尝试了上述两个命令,但都出现了错误

错误:MinimongoError:无法使用字符串字段名[$][409]追加到数组


如何插入该ids字段?

问题在于meteor使用的minimongo实现,因为它目前不支持位置$operator

从下面的数据示例中,操作在mongo shell中运行

{
    "_id" : ObjectId("52eb0a6542b2498fd49f4f28"),
    "question" : "quest",
    "option1" : [
            {
                    "pd" : "op1",
                    "ids" : [ ]
            },
            {
                    "pd" : "op7",
                    "ids" : [ ] 
            }
    ],
    "option2" : [
            {
                    "pd" : "op2",
                    "ids" : [ ]
            }
    ],
    "option3" : [
            {
                    "pd" : "op3",
                    "ids" : [ ]
            }
    ],
    "option4" : [
            {
                    "pd" : "op4",
                    "ids" : [ ]
            }
    ]
}
应用以下语句将值推送到匹配元素的“id”数组上

db.poll.update({"option1.pd": "op1"},{$push: { "option1.$.ids": 6 }})
基本上相同的代码也适用于服务器端

解决方案似乎是将此更新封装在一个函数调用中,该函数调用可以从客户端调用,并在服务器上执行代码

以下是一些确认问题的链接:


这就是我如何在集合中插入Polls\u Coll.insert({question:quest,option1:[{pd:op1,ids:[]}],option2:[{pd:op2,ids:[]}],option3:[{pd:op3,ids:[]}],option4:[{pd:op4,ids:[]});'这就是我在代码更新中尝试更新的方式({{u id:this.{u id},{$push:{'option1.$.id':'hooya'});我在浏览器控制台中尝试了这个也不起作用的Coll.update({{u id:“soeg9ezkMwKFmdPkT”,“option1.pd:“android”},{$push:{“option1.$.ids”:6}})我在js文件顶部声明了这个集合,并从服务器端发布,在客户端订阅。现在我在控制台Polls_Coll.update({u id:“soeg9ezkMwKFmdPkT”,“option1.pd:“android”},{$push:{“option1.$.ids”:6}})中尝试了这个方法,现在它显示错误:不允许。虽然我提供了ID,但不受信任的代码只能通过ID[403]更新文档。谢谢您的帮助,是的,这就是问题所在。关于答案和您的问题的更新说明,以澄清这是minimongo的流星问题。您将无法对此数据使用透明的“更新”方法,需要启动一个更传统的RPC调用。嘿,尼尔,我感谢您的帮助,我是这个stackoverflow的新手。一旦我得到这15分,我肯定会投票给你的答案。抱歉耽搁了