そのため、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})
これも失敗しました。
どんな提案でも大歓迎です。