簡體   English   中英

是否可以在MongoDB文檔的數組中間插入元素?

[英]Is it possible to insert an element into the middle of an array in a MongoDB document?

假設我在mongo DB中有一個文檔,看起來像這樣:

{
    pages: [
        {
            elements: [
                {id:1},
                {id:2},
                {id:3}
            ]
        },
        {
            elements: [
                ...
            ]
        }
    ]
}

並且頁面內元素的順序具有語義(例如,堆疊)。 現在說我想在第一頁的第二個元素之前添加一個新元素。 結果文檔的期望狀態是這樣的:

{
    pages: [
        {
            elements: [
                {id:1},
                {id:4}, // <------ element inserted here
                {id:2},
                {id:3}
            ]
        },
        {
            elements: [
                ...
            ]
        }
    ]
}

Mongo文檔中,我看到了如何在數組的末尾添加元素以及如何更新現有元素的值,但是沒有看到如何插入數組的中間(如PHP的array_splice )。 僅通過將整個數組重新分配到中間插入了所需元素的新數組,才有可能嗎?

本質上,如果您使用update ,則不能保證順序。 要添加嘗試嘗試建議的問題,盡管可以在特定位置更新元素,但是不能使用類似的規范調用$addToSet$push

您想要的相關功能請求在這里:

https://jira.mongodb.org/browse/SERVER-2363

但是,就目前而言,正如您所懷疑的那樣,如果不拉出數組,根據需要進行操作並使用$set ,就無法做到這一點。

MongoDB現在支持此功能。 您可以使用$ position運算符將元素插入數組的中間。

祝好運

您不應該將層號存儲為數組元素的屬性嗎? BSON規范說數組是鍵-值對,因此您需要使用層號作為數組中的鍵。(MongoDB使用BSON來存儲數據)

暫無
暫無

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

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