如何更新MongoDB中的特定数组元素
我是MongoDB的新手。我在mongoDB中以以下格式存储了数据如何更新MongoDB中的特定数组元素,mongodb,spring-mongo,Mongodb,Spring Mongo,我是MongoDB的新手。我在mongoDB中以以下格式存储了数据 "_id" : ObjectId("51d5725c7be2c20819ac8a22"), "chrom" : "chr22", "pos" : 17060409, "information" : [ { "name" : "Category", "value" : "3" }, {
"_id" : ObjectId("51d5725c7be2c20819ac8a22"),
"chrom" : "chr22",
"pos" : 17060409,
"information" : [
{
"name" : "Category",
"value" : "3"
},
{
"name" : "INDEL",
"value" : "INDEL"
},
{
"name" : "DP",
"value" : "31"
},
{
"name" : "FORMAT",
"value" : "GT:PL:GQ"
},
{
"name" : "PV4",
"value" : "1,0.21,0.00096,1"
}
],
"sampleID" : "Job1373964150558382243283"
我想将名称为Category
的值更新为11。
我尝试了以下问题:
db.VariantEntries.update({$and:[ { "pos" : 117199533} , { "sampleID" : "Job1373964150558382243283"},{"information.name":"Category"}]},{$set:{'information.value':'11'}})
但是Mongo回答说
can't append to array using string field name [value]
如何形成更新特定值的查询?在MongoDB中,不能以这种方式处理数组值。因此,您应该将模式设计更改为:
"information" : {
'category' : 3,
'INDEL' : INDEL
...
}
然后,您可以处理查询中的单个字段:
db.VariantEntries.update(
{
{"pos" : 117199533} ,
{"sampleID" : "Job1373964150558382243283"},
{"information.category":3}
},
{
$set:{'information.category':'11'}
}
)
您可以使用位置运算符标识第一个数组元素,以便与更新中的查询相匹配,如下所示:
db.VariantEntries.update({
“位置”:17060409,
“样本ID”:“作业1373964150558382243283”,
“信息.名称”:“类别”
},{
$set:{'information.$.value':'11'}
})
您看过