これはPythonでpymongoを使用した更新クエリの一部です。私は、$push
のip変数を配列の長さが10未満の場合にのみ変更したいと思います。この問題を最初に解決し、配列の長さをチェックすることはできますが効率的なソリューションではありません。どのようにmongoを使ってこの問題を処理するのですか?
私は、$cond
は集約でしか動作しないので、何か他のものを描くことはできません。私のスクリプトの
パート:私の脳は何をしたいのか
self.db[coll_name].update_one(
{
'summary.userId': user_id
},
{'$push':
{
'summary.ip': ip
},
}
upsert=True
)
:
self.db[coll_name].update_one(
{
'summary.userId': user_id
},
{
"$cond": {"if": {"$size": {"$summary.ip": {"$ne": 10}}},
"then": {"$push": ip},
"else": pass
}},
upsert=True
)
私はpymongoする自分自身を制限しようとしているが、JSでのMongoDBを使用して答えは歓迎以上です。
編集:ご迷惑をおかけして申し訳ございません。
条件が満たされなかった場合、他のフィールドのイベントを更新できるようにします。
self.db[coll_name].update_one(
{
'summary.userId': user_id
},
{'$push':
{
'summary.ip': ip
},
'$addToSet':
{
'summary.something_list': something
},
}
upsert=True
)
私は腹腔配列の長さによってフィルタする場合、私は私がしなければならないIPリストのEQ 9、場合something
を追加しません。
私の文書には2つの配列があり、チェックしたいと思っています。両方とも。私はあなたのソリューションがこのケースで動作する状況を想像することはできませんが、あなたは私の質問に答え、それは今のところ仕事をするでしょう。ありがとう。 さらに、len(array_1)> 10:が合格し、len(array_2)> 10:が合格であるかどうかをチェックしたかったので、そのうちの1つにのみ追加する場合があります。 –
最初の配列と同じように、2番目の配列をフィルタに追加することができます –
ご迷惑をおかけして申し訳ありませんが、私は質問を更新しました。私がIPでフィルターをかけると、残りの更新クエリを実行することができなくなります。さらに多くのことがあります。私の質問に例を追加しました。 –