更新集合內的陣列集合我有一個蒙戈集合workspaces
在我的MongoDB其中包括看起來像如下記錄:MongoDB中
{
"_id" : ObjectId("58bdc4a13504f5ed743ad025"),
"name" : "My workspace",
"user_id" : ObjectId("58b6cf53988a874af070fd3b"),
"uploads" : [
{
"original" : "DE-20__450_GG_5002_N23_994__0136.tif"
},
{
"original" : "DE-20__450_GG_5002_N23_994__0134.png"
},
{
"original" : "DE-20__450_GG_5002_N23_994__0136.png"
},
{
"original" : "DE-20__450_GG_5002_N23_994__0134.tif"
}
]
}
現在我的目標是,我想在一個附加的東西的數組uploads
的記錄與匹配標準original
字段值。比如我要追加"pseg" : "DE-20__450_GG_5002_N23_994__0136.pseg.tif"
到{"original" : "DE-20__450_GG_5002_N23_994__0136.tif"}
收集方式如下:
{
"_id" : ObjectId("58bdc4a13504f5ed743ad025"),
"name" : "Objective",
"user_id" : ObjectId("58b6cf53988a874af070fd3b"),
"uploads" : [
{
"original" : "DE-20__450_GG_5002_N23_994__0136.tif",
"pseg" : "DE-20__450_GG_5002_N23_994__0136.pseg.tif"
},
{
"original" : "DE-20__450_GG_5002_N23_994__0134.png"
},
{
"original" : "DE-20__450_GG_5002_N23_994__0136.png"
},
{
"original" : "DE-20__450_GG_5002_N23_994__0134.tif"
}
]
}
我嘗試使用$elemMatch
,然後我在下面的方式加$addToSet
:
db.getCollection('workspaces').update({"_id": ObjectId("58bdc4a13504f5ed743ad025"),"uploads": {$elemMatch: {"original": "DE-20__450_GG_5002_N23_994__0136.tif"}}},{$addToSet:{"uploads.$": {"pseg" : "DE-20__450_GG_5002_N23_994__0136.pseg.tif"}}})
,但它給了我以下錯誤:
Cannot apply $addToSet to a non-array field. Field named '0' has a non-array type object in the document _id: ObjectId('58bdc4a13504f5ed743ad025')
我想我製作了錯誤的查詢任何人都可以告訴我什麼是錯的,我該如何解決e嗎?
對不起,我的英語不好:)希望你明白我說的話。
非常感謝它的工作。非常感謝鏈接,這對於理解正確的語法非常有幫助。另外感謝給點表示法的想法,我不知道我們可以在收集數組的情況下使用它。 – Seeker