2016-04-27 5 views
0
db.getCollection('someCollection').update({"SomeNumberField": 1},  
    { $set: 
     { 
     SomeNumberField: NumberLong(1) 
     } 
    }, { multi: true }) 

これは、 "SomeNumberField"をダブルとして保存します。私はdocs, and they recommend "NumberInt"を調べましたが、これはint32であるはずですが、どちらもうまくいきません。Mongo Field ValueをLongとして保存するにはどうすればよいですか?

私はこれに関する情報を見つけることができません驚いています。

編集:私が試してみました:答えhereと同様に

SomeNumberField: NumberLong("1") 

を、まだ動作しません。

答えて

0

NumberLong()が有効です。文字列argを渡すことはうまくいきます。以下のクエリを試しました

db.test.insert({long: NumberLong("12345678910")}); 

クエリを実行しているときにエラーが表示されますか。

+0

これは機能しません。それを試してください、それはそれを変換しません。ちょうど二重として保存します。 – VSO

+0

mongoフィールドが多相であるため、フィールドを最初に削除する必要はありません。マルチを使わずに簡単なアップデートを試してみて、これがうまくいくかどうかを確認することができます。 db.test.update({SomeNumberField:1}、{SomeNumberField:NumberLong( "12345678910")}); –

+0

何千ものアイテムを更新する必要がある場合、簡単な更新のポイントは何ですか? – VSO

0

私は自分自身の質問に初めて答えるだろうが、これはばかげている。最初にフィールドを削除してから設定する必要があります。

//Delete your double field - make sure you can identify the records you deleted from later though 
    db.getCollection('someCollection') 
    .update({"SomeOtherFieldUniquerlyIdentifyingItemsToUpdate": "the value you are looking for"}, 
    {$unset: {SomeNumberField:1}}, {multi: true}) 

//Create a NEW field with the int64 value you want 
db.getCollection('someCollection').update({"SomeOtherFieldUniquerlyIdentifyingItemsToUpdate": "someValue"},  
     { $set: 
      { 
      SomeNumberField: NumberLong(1) 
      } 
     }, { multi: true }) 
関連する問題