簡體   English   中英

在 MongoDB 的實例數組中僅拉取一項?

[英]Pull only one item in an array of instance in MongoDB?

我正在使用 MongoDB(通過在 NodeJS 上使用 Mongoose)。

{
"_id":{"$oid":"5fa4386f3a93dc470c920d76"},
"characters":[
    {"$oid":"5fa4389e3a93dc470c920d78"},
    {"$oid":"5fa4389e3a88888888888888"},
    {"$oid":"5fa4389e3a88888888888888"},
    {"$oid":"5fa4389e3a88888888888888"}
    ]
}

我試圖在我的字符數組中只刪除一行 object id "5fa4389e3a88888888888888"。 通過做..

User.findByIdAndUpdate("5fa4386f3a93dc470c920d76", { $pull: { characters: "5fa4389e3a88888888888888" } }, (err) => {});

問題是每行具有“5fa4389e3a88888888888888”值的行都被刪除了。 我只想拉1。

可能嗎?

感謝您的幫助

您可以將update 與聚合管道一起使用,並使用$function運算符定義自定義函數以實現 MongoDB 查詢語言不支持的行為。 從 MongoDB v4.4 開始,

User.findByIdAndUpdate("5fa4386f3a93dc470c920d76",
[
    {
        $set: {
            characters: {
                $function: {
                    body: function(characters) {
                        for (var i=0; i<characters.length; i++) {
                            if (characters[i] == "5fa4389e3a88888888888888") {
                                delete characters[i];
                                break;
                            }
                        }
                        return characters;
                    },
                    args: ["$characters"],
                    lang: "js"
                }
            }
        }
    }
])

暫無
暫無

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

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