在mongodb中插入嵌套数组?
我使用的是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
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分,我肯定会投票给你的答案。抱歉耽搁了