わかりました、これはおそらくばかげた質問ですが、さまざまなクエリを読んで試してみましたが、何らかの理由でエラーをスローせずにこれを機能させることができません。MongoDB を使用するのはこれが初めてで、RoR プロジェクトに参加しています。慈善団体に twitter ハンドル フィールドを設定しましたが、もともとモデルには含まれていませんでした。そのため、DB に慈善団体を追加しましたが、今ではどれも twitter ハンドル フィールドを持っていません。私はそれをモデルに追加したので、作成された他のすべてがそれを持っています。
私の問題は、DB に既にある慈善団体を更新しようとすると、$set を指すエラーが発生し続けることです。
namespace :add_tw_handles_fields_2013_6_13 do
desc "add_tw_handle"
task :add_tw_handle => :environment do |t, args|
# db.charity.update( { featured: false }, { $set: { tw_handle : "test"}}, false, true)
# got your 6
Charity.update({ },
{
$set: { "tw_handle": "test"}
},
{ multi: true }
})
end
end
上記の 2 つの synax 呼び出しを試しました。これら 2 つのドキュメントを読んでいましたhttp://docs.mongodb.org/manual/reference/method/db.collection.update/ http://docs.mongodb.org/manual/core /update/#Updating-The%24positionaloperator .
私はいつもこのエラーを受け取ります:
add_tw_handles_fields_2013_6_13.rake:16: syntax error, unexpected ':', expecting tASSOC
$set: {
私が知る限り、それは正しい構文です。これをスクリプトで実行しているので、データベースは必要ないと思います。私のモデル名の前(コメントされていない更新に示されているように)ですよね?私はこれに慣れていませんが、例を文字通りコピーして貼り付け、情報を入力しましたが、何も入力しませんでした。次に、クエリを追加しようとしましたが、 $set: に到達するまでエラーは発生しません。理由はわかりません。上記のMongoドキュメントに示されているとおりです。
私の問題についての洞察は大歓迎です。
ありがとう、
アラン