1
mongodbデータベースでは、フィールドの照会に問題があります。私のコレクションのユーザーは、次のようになります。mongodb内のドキュメント内の埋め込み配列フィールドを照会
{
"_id" : "sam",
"_password" : "t",
"data" : [
{
"_id" : "hp",
"nodeList" : [{'nodeId' : 1},{'nodeId' : 2},{'nodeId' : 3}],
"edgeList" : [{'edgeId' : 1},{'edgeId' : 2},{'edgeId' : 3}],
"options" : {
"edgeColor" : "blue",
"nodeColor" : "black"
}
},
{
"_id" : "tt",
"nodeList" : [{'nodeId' : 1},{'nodeId' : 2},{'nodeId' : 3}],
"edgeList" : [{'edgeId' : 1},{'edgeId' : 2},{'edgeId' : 3}],
"options" : {
"edgeColor" : "blue",
"nodeColor" : "black"
}
}
]},
{
"_id" : "bob",
"_password" : "w",
"data" : [
{
"_id" : "hello",
"nodeList" : [{'nodeId' : 1},{'nodeId' : 2},{'nodeId' : 3}],
"edgeList" : [{'edgeId' : 1},{'edgeId' : 2},{'edgeId' : 3}],
"options" : {
"edgeColor" : "blue",
"nodeColor" : "black"
}
},
{
"_id" : "world",
"nodeList" : [{'nodeId' : 1},{'nodeId' : 2},{'nodeId' : 3}],
"edgeList" : [{'edgeId' : 1},{'edgeId' : 2},{'edgeId' : 3}],
"options" : {
"edgeColor" : "blue",
"nodeColor" : "black"
}
}
]
}
が、私はこのことからnodeList/edgeLis
トンを取得し、また、特定の_id
与えられたオプションでのEdgeColorを変更する必要があります。たとえば:_ id : "bob"
。
私はいくつか試しましたが、出力を得ることができませんでした。
db.users.find({ '_id': 'sam' , "users.data._id" : "hp"}, {})
db.users.findOneAndUpdate({"_id":"sam", "users.data._id": "hp"},{$addToSet:{"users.data.nodeList":{"nodeId":1,"nodeName":"Bellanduru", "lat":43.12, "long":33.43,"stock":3}}})
どうか私に教えてください。この"users.data._id"
この"data._id"
と交換例えば
は次のようにあなたのquerysを置き換えるクエリで指定
これは実行可能だとは思わないi n単一のクエリ。内部ノード文書オブジェクトをデータ配列に入れ、その値を設定してからユーザー文書に設定し、更新されたユーザー文書で更新クエリを実行する必要があります。私が気づいたことの1つは、あなたの質問に間違っていたことです。あなたの鍵に"db.users ...."と入力すると、既にユーザーコレクションをアドレッシングしているので、これを行う必要はありません。 –