0

ですから、質問をする前に、Mongo ではフィールド名にピリオド (.) を使用できないことを知っていると言いたいと思います。

驚くべき部分は、多次元配列のフィールド名としてピリオドを含むデータを PHP が mongo に挿入できたことです。PHP バージョン 5.4 の Mongo ドライバー 1.4 を使用しています。

したがって、配列構造は次のようになります。

Array(
["field1"] => "value",
["field2"] => "123",
["field3"] => array( ["abc.def"] => array( ["test"] => "value" )
);

私が達成したいのは、field2 の値を文字列から整数に変更することです。

その巨大なデータとアプリケーションはそれに依存しています。タイプを文字列から整数、または整数から文字列に更新する必要があります。将来挿入するアプリケーションを制御できますが、入力されたものは変更できません。同じ問題の回避策を教えてください.

誰かがこれにアイデアを割ってくれることを大いに期待しています.. !! ;)

4

1 に答える 1

2

私が見つけた最善の回避策は、db.collection.update(); を使用することでした。私はExcelの長い手順を経て、すべての行に対して同様のクエリを作成する必要がありましたが、その直後に db.collection.find().forEach(); を使用できることに気付きました。

したがって、ソリューションを削減するには、 forEach を使用して反復し、更新するデータとフィールドに一致する条件で db.collection.update() を実行します。クエリを文字列としてフォーマットし、eval(); を使用しました。

もっと短い方法を見つけたら、教えてください..!!

于 2013-10-21T11:16:35.763 に答える