0
私はpymongo
を使用してのmongo文書内の配列を更新しようとしているが、それは動作していない経由で作品を指令するが、robomongoに作品をして、同じクエリをコピーします。 更新はモンゴシェル経由ではなくpymongo
roboMongo(それは{'n': 1, 'nModified': 0, 'ok': 1.0, 'updatedExisting': True}
返す):
db.my_collection.updateMany(
{'start_time': 1501700400.0},
{'$pull': {'related': {'$in': [{'KEY': '1', 'TYPE': 'my_type'}]}}},
{upsert:true}
)
pymongoコード:
query_document = {'start_time': 1501700400.0}
update_command = {'$pull': {'related': {'$in': [{'KEY': '1', 'TYPE': 'my_type'}]}}}
_client[db][collection].update_many(query_document, update_command, True)
文書:私は多分それが関連していると思ってい
{
"_id" : ObjectId("598570c4ffd387293e368c8d"),
"related" : [
{
"KEY" : "6",
"TYPE" : "my_type"
},
{
"KEY" : "2",
"TYPE" : "my_type"
},
{
"KEY" : "3",
"TYPE" : "my_type"
},
{
"KEY" : "5",
"TYPE" : "my_type"
},
{
"KEY" : "8",
"TYPE" : "my_type"
}
],
"end_time" : 1501621200.0,
"start_time" : 1501700400.0
}
へ」と「 ?
アドバイスはありますか?
おかげ
pymongoコールの結果はどうなりますか?それはエラーですか?またはそれはokを実行しますが、何も更新しませんか? – bagrat
結果は次のとおりです。 '{ 'N':1、 'nModified':0、 'OK':1.0、 'updatedExisting':Trueの場合}' –
だからクエリがドキュメントにマッチしますが、文書を変更しませんか?それは、 '$ KEY'と(' KEY ': "1"、... ')そこにない' related'の配列要素をしようとしているからですか?あなたがrobomongoでこれを行うと、正確に何が起こりますか?両方のクエリがドキュメントの全く同じバージョンで動作することは確かですか? – guessimtoolate