3

そのため、JSON バックエンドを少し管理するために Mongodb を評価しています。私はまったく初めてで、コードで行うのが面倒な問題が 1 つあります。

おおよそ次のようなデータ構造があります。

[
{
    "_id" : ObjectId("526f59ee82f2e293f9833c54"),
    "humans" : [
        {
            "serviceUsers" : [
                {
                    "foo1" : "bar2",
                    "foo2" : "bar3"
                },
                {
                    "foo1" : "baz2",
                    "foo2" : "baz3"
                }
            ]
        }
    ]
}
]

そして今、「foo1」が「baz2」に等しいserviceUsers配列要素をすべて削除したいので、理想的には次のようになります。

[
{
    "_id" : ObjectId("526f59ee82f2e293f9833c54"),
    "humans" : [
        {
            "serviceUsers" : [
                {
                    "foo1" : "bar2",
                    "foo2" : "bar3"
                },
            ]
        }
    ]
}
]

そこが$pull出発点だと思いました。そして、私はたくさんのゆがみを試しました。コレクションmytestsにいる場合、試しました

db.mytests.update({"humans.serviceUsers.foo1":"baz2"}, {$pull:{"humans.serviceUsers" : {"foo1":"baz2"}}}, {multi: true})

$pull確かに素朴な私の目には、次の構文に従う必要があるようです。

db.collection.update( { field: <query> }, { $pull: { field: <query> } } );

モンゴは文句を言いません。ただし、コレクションもまったく変更されません。

私も試しました

db.mytests.update({}, {$pull:{"humans.serviceUsers" : {"foo1":"baz2"}}}, {multi: true})

これも失敗しました。

どんな提案でも大歓迎です。

4

1 に答える 1