sql >> データベース >  >> NoSQL >> MongoDB

メソッドは開発では機能しますが、本番環境では機能しませんRails MongoDB

    Couponをお持ちの場合 Mongoidモデルの場合、MongoDBシェルのコレクションはdb.couponsになります。 。それが理由を説明します:

    db.Coupon.insert(...)
    

    MongoDBシェルでは、Railsコードで期待するものが提供されていません。

    $existsに関するNeilのコメントに関する限り 対明示的なnil チェックは行きます、私はあなたが本当にnilを望んでいると思います (別名null MongoDB内)チェック。 MongoDBシェルでこれを検討してください:

    > db.models.insert({ n: 11 })
    > db.models.insert({ n: 0 })
    > db.models.insert({ n: null })
    > db.models.insert({ })
    > db.models.find()
    { "_id" : ObjectId("571546e1ce2934dadf379479"), "n" : 11 }
    { "_id" : ObjectId("571546e4ce2934dadf37947a"), "n" : 0 }
    { "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }
    { "_id" : ObjectId("571546ecce2934dadf37947c") }
    

    したがって、nを持つドキュメントを含むコレクションがあります。 、nはありません 、明示的なnullがあります nの値 、およびnull以外 nの値 。

    次に、:n => nilのようなMongoidクエリの違いを確認できます。 :

    > db.models.find({ n: null })
    { "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }
    { "_id" : ObjectId("571546ecce2934dadf37947c") }
    

    および:n.exists => true (別名:n => { :$exists => true } ):

    > db.models.find({ n: { $exists: true } })
    { "_id" : ObjectId("571546e1ce2934dadf379479"), "n" : 11 }
    { "_id" : ObjectId("571546e4ce2934dadf37947a"), "n" : 0 }
    { "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }
    

    および:n => { :$exists => false }

    > db.models.find({ n: { $exists: false } })
    { "_id" : ObjectId("571546ecce2934dadf37947c") }
    

    したがって、:expires_at => nil クエリは、expires_atを持たないドキュメントを検索します およびexpires_atが存在するドキュメント 明示的にnilに設定されました 。 remove_attributeを注意深く呼び出さない限り、これらの両方のケースはMongoidで発生します。 nilを割り当てる代わりに どちらの場合も「有効期限なし」を意味します。




    1. なぜ2dsphereインデックスを作成するのですか?クエリするとs2cursorが表示されますか?

    2. 変数を正規表現に渡す方法

    3. Quarkusmongodbの統合

    4. mongodb / node.jsの既存のコレクションに自動インクリメントを追加するにはどうすればよいですか?