mongodb - MongoDB:使用更新方法添加数组的新元素不起作用
问题描述
我使用mongodb的udpate方法来改变一个数组的元素,我希望添加一个新元素,但是它改变了第一个而不是添加一个新的。但是,如果我使用 updateOne 就可以了。这是更新的错误,或者我犯了一个错误。谢谢你的帮助!我所做的如下。
1.db.test.insertOne({a:[{b:1,c:2}]});
2.db.test.find({}) returns:
{
"_id" : ObjectId("5fc593001b800790b21afa62"),
"a" : [
{
"b" : 1.0,
"c" : 2.0
}
]
}
3. db.test.update({_id:ObjectId("5fc593001b800790b21afa62")},
[{
$set:
{"a.1":
{a:3, b:30}
}
}])
4)db.test.find({}) returns:
{
"_id" : ObjectId("5fc593001b800790b21afa62"),
"a" : [
{
"b" : 1.0,
"c" : 2.0,
"1" : {
"a" : 3.0,
"b" : 30.0
}
}
]
}
It seems wrong, and it should be like {
"_id" : ObjectId("5fc593001b800790b21afa62"),
"a" : [
{
"b" : 1.0,
"c" : 2.0
},
{
"a" : 3.0,
"b" : 30.0
}
]
}, do I make a mistake? However, if I use updateOne, it works.
5) Instead of update method, execute:
db.test.updateOne({_id:ObjectId("5fc593001b800790b21afa62")},
{
$set:
{"a.1":
{a:3, b:30}
}
})
6) db.test.find({}) returns:
{
"_id" : ObjectId("5fc593001b800790b21afa62"),
"a" : [
{
"b" : 1.0,
"c" : 2.0
},
{
"a" : 3.0,
"b" : 30.0
}
]
}
It's what I want.
我认为他们应该做同样的事情,我误解了吗?我该怎么做才能让它发挥作用?非常感谢!
解决方案
推荐阅读
- javascript - 在单独的 JS 文件中调用文档对象?
- python - Tkinter tkFileDialog 模块 - 仅限于一个文件夹
- mysql - 如何在不通过多次连接计算的情况下对值求和 - laravel 7
- swiftui - 更改深色和浅色模式的按钮样式
- codeigniter - 在 null 上调用成员函数 view()
- django - Django 模板加载器在另一个应用程序中搜索模板
- postgresql - 我们可以在结果集中添加 COUNT 作为列吗?
- php - 添加 session_id 作为参数会导致我在 Apache/PHP 中出现 403 错误?
- deep-learning - 如何在长句中使用bert?
- python - 如何为 discord.py bot 中的命令添加高级订阅?