簡體   English   中英

mongodb:在集合內部的帖子中更新數組項

[英]mongodb: update array item inside of a post inside of a collection

我試圖弄清楚如何更新屬於帖子一部分的數組中的項目。 我確實找到了看起來最接近我想要的東西: MongoDB更新數組元素

但是我沒有像這個例子所示的那樣先排好特定的帖子。 但是我需要先使用_id查找特定的帖子,然后從結果帖子中更新數組中的一項。

我可以使用一個查詢來執行此操作,還是需要先找到該項目然后再像另一個答案中的示例所示那樣對其進行更新?

在下面的json中,我如何更新第一條評論:第一條評論?

編輯:

[{
    "_id": "52c06c86b78a091f26000001",
    "comments": [
        {
            "user_id": "52ad97bab142627664000001 ",
            "username": "phacer",
            "comment": "nice dress!!!",
            "created": 1390668491909,
            "_id": "_SvF-Ag4d6wFf9QR1KdAdFIpcCyI3cqm2F4rl3w7rdk="
        },
        {
            "user_id": "52ad97bab142627664000001 ",
            "username": "phacer",
            "comment": "nice dress!!!",
            "created": 1390668491909,
            "_id": "_SvF-Ag4d6wFf9QR1KdAdFIpcCyI3cqm2F4rl3w7rdk="
        }
    ],
    "desc": "Something somethingson",
    "hate": [],
    "imageurl": "some url",
    "love": [
        {
            "user_id": "52add4f4344e8ca867000001",
            "username": "asd",
            "created": 1390652212592
        }
    ],
    "tags": [
        {
            "y": 29.3,
            "brand": "Zara",
            "type": "Bow Tie",
            "x": 20,
            "color": "Black"
        }
    ],
    "user_id": "52add4f4344e8ca867000001"
},
{
    "_id": "52c06c86b78a091f26000001",
    "comments": [
        {
            "user_id": "52ad97bab142627664000001 ",
            "username": "phacer",
            "comment": "nice dress!!!",
            "created": 1390668491909,
            "_id": "_SvF-Ag4d6wFf9QR1KdAdFIpcCyI3cqm2F4rl3w7rdk="
        }
    ],
    "desc": "Something somethingson",
    "hate": [],
    "imageurl": "some url",
    "love": [
        {
            "user_id": "52add4f4344e8ca867000001",
            "username": "asd",
            "created": 1390652212592
        }
    ],
    "tags": [
        {
            "y": 29.3,
            "brand": "Zara",
            "type": "Bow Tie",
            "x": 20,
            "color": "Black"
        }
    ],
    "user_id": "52add4f4344e8ca867000001"
}]

您應該考慮使用$elemMatch文檔 ),如下所示:

.update({'_id': '52c06c86b78a091f26000001', 'comments' : {$elemMatch: {'_id': '_SvF-Ag4d6wFf9QR1KdAdFIpcCyI3cqm2F4rl3w7rdk='}}}, {$set : {'comments.$.comment': 'Lame dress!'}})

您可以在Mongo中使用位置運算符來訪問特定的數組元素,如下所示

db.collection.update( { _id: 52c06c86b78a091f26000001 }, { $set: { "comments.$1.comment" : "dress" } } ) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM