今天是我使用 MongoDB 的第一天
我的收藏格式:
{ "_id" : "ObjectId" :"4f2ff1d00cf2f86576f91a91"),
"fishStuff" : [
{
"name" : "GreatWhite",
"fID" : 50
},
{
"name" : "Hammerhead",
"fID" : 51
},
{
"name" : "White",
"fID" : 60
}
], "fishSpecies" : "Oceanic"
...
我想在shell(直接mongo)中编写一个查询,它将删除第三个孩子(名字:White),因为第一个孩子存在于这组“fishStuff”中。
我相信“where”子句应该是:
{fishSpecies:"Oceanic","fishStuff.fID":50, "fishStuff.fID:60}
那么如何删除整个“60”子元素呢?当“50”也在同一个“fishStuff”组/数组中时,我想删除集合中的每个“60”元素。此外,我在“where”子句中包含 fishSpecies 的原因是因为 fishSpecies 的可能性不止一种。
更新:
我已经尝试了下面两位评论者留下的建议,仍然得到 7 个包含 fID 50 和 60 的子对象集实例(在运行下面的计数之后):
> db.fish.update({fishSpecies:"oceanic","fishStuff.fID":50}, {$pull : {"fishStuff" : { fID : 60}}},false, true)
> db.fish.find({"fishSpecies":"oceanic","fishStuff.fID":50, "fishStuff.fID":60}).count()
7
multi: true 标志不起作用(或者我没有正确实现它),因为更新了零记录。