問題タブ [mongoid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - MongoDB (Mongoid を使用) または ActiveRecord (MySQL を使用する Rails) に同じレコードが 2 回挿入されないようにするにはどうすればよいですか?
たとえば、Analytics で page_type、item_id、date、pageviews、timeOnPage を記録するとします。
回避する方法はいくつかあるようです。自動的な方法はありますか?
たとえば、レコードを一意に識別するフィールドにインデックスを作成し、インデックスを一意にします
[page_type, item_id, date]
。これにより、同じレコードを追加すると拒否されます。または、DB またはフレームワークがサポートしている場合は、上記を一意のプライマリ インデックスにします。ただし、Rails では通常、ID 1、2、3、4 がプライマリ インデックスです。
または、 を使用してレコードをクエリし、
[page_type, item_id, date]
そのレコードが既に存在する場合は更新します (または、pageviews と timeOnPage の値が既に同じ場合は何もしません)。レコードが存在しない場合は、このデータで新しいレコードを挿入します。しかし、この方法でレコードをクエリする必要がある場合は、とにかくこれら 3 つのフィールドにインデックスが必要なようです。常に新しいレコードを挿入しますが、値を照会するときは、次のようなものを使用します
/li>
つまり、作成された最新のレコードを取得し、残りを無視します。select sum(pageviews)
しかし、これは 1 レコードの解決策のように見えますが、やなどの値を合計する (集計を行う) 場合にはあまり実現可能ではありませんselect count(*)
。
上記の方法を使用する以外に、自動解決策もありますか?
ruby-on-rails - MongoDB はどのように日付のみを比較し、日付 <= '2010-09-10' などの時間を無視しますか?
何らかの理由で:
0 を返しますが、
レコード (ドキュメント) の数である 230 が返されます。
実は、一番上の一行目は別のケースで動いているので、かなり奇妙です。
比較できるのは日付のみです。
Time.parse('2010-09-10') は 2010-09-10 00:00:00 を与えるため、日付が 2010-09-10 のすべてのレコードはカウントされないため、レコードはすべて 2010 年でなければなりません。 -09-09 午前 0 時前。つまり、2010-09-10 2am は含まれません。2am は 00:00:00 以下ではないからです。を使用してハッキングすることができます
しかし、それはちょっと醜いです。この投稿のコードの最初の行のように、日付のみで比較する方法がある場合は?
ruby-on-rails - Mongoid には Map/Reduce がありますか?
Ruby コードを使用して、Mongoid によって返された配列から合計を計算しています。
しかし、mongoid.org と Google で Map Reduce に関するドキュメントが見当たらないことを除けば、Map/Reduce を使用する方が高速になる可能性があります。
結果も出ません。(または または をMapReduce
使用Map/Reduce
)
MongoDB のサイトにドキュメントがあります
ただし、Mongoid でも Map Reduce を使用する必要があります。
mongodb - なぜMongoDBは一意のインデックスを作成できますが、Mongoidは作成できませんか?
MongoDB シェルで次の操作を行うと、インデックスが作成され、重複レコードが挿入されなくなります。
しかし、Mongoid でも同じことができると思いました: http://mongoid.org/docs/indexing/
ので、私は持っています:
そして、
それでも、重複レコードを挿入できますか?
更新:かなり奇妙ですが、MongoDB シェルでインデックスを追加してコレクションを削除し、MongoDB シェルまたは Mongoid でインデックスを再作成した後、MongoDB シェルでコレクションを削除してから、rake を作成できます。インデックスを作成し、mongoid を使用して同じドキュメントを 2 回追加すると、mongod は重複キーのエラーを表示します。
ruby - MongoDB Rubyドライバーを使用して「グループ化」(group by)を実行するにはどうすればよいですか?
Rubyドライバーを使用したMongoDBグループに関連
SQLで次のようなことをしたい場合:
MongoDBのドキュメントには
http://api.mongodb.org/ruby/current/Mongo/Collection.html#group-instance_method
したがって、他の投稿から、私は使用しています:
しかし実際には
これは、コレクション内のレコード(ドキュメント)の総数です。上記で何かが正しくありませんか?キーは次のような静的な文字列かもしれないと思いました
http://kylebanker.com/blog/2009/11/mongodb-count-group/
しかし、それは他のstackoverflowポストにはありません。
更新:実際には、上記のリンクで、次のようなソリューション
は機能しますが、なぜこの投稿の最初の方法が機能しなかったのか疑問に思います。
ruby - mongoidに相当するfind_by_sql?
mongoidに相当するfind_by_sqlのようなものはありますか?ここでは、mongoクエリを渡し、結果からMongoid :: Documentを具体化しますか?
mongodb - MongoDBのMap/Reduceは常に結果をfloatで返しますか?
RubyMongDBドライバーの上にあるMongoidを使用しています。私のマップの放出はを与えparseInt(num)
、リデュースの戻りはまたを返しますがparseInt(num)
、最終的な結果はまだフロートです。
それはMongoDBに特有ですか?代わりに整数にする方法はありますか?
tags - タグのMongoid/MongoDBツリーの構造に関する推奨事項
このデータモデルのタグ部分を構造化する方法に関するいくつかの推奨事項を探しています。
これを簡略化したものを次に示します。
- サイトには多くの投稿があります(リレーショナルアソシエーション[mongoidのreferences_many])。サイトにはタグのツリーがあります
- 投稿にはタグの配列があります(サイトのタグのサブセット、順序は関係ありません)
私が気にかけているユースケースは次のとおりです。
- サイトのタグをツリー形式ですばやく保存および取得します(つまり、UIでツリーとして表示できるようにします)
- サイトのどの投稿に特定のタグが付いているかをすばやく照会します。
ツリー構造がなければ、 http: //github.com/wilkerlucio/mongoid_taggableは私のユースケースを解決します。Mongoidのacts_as_treeポートのいくつかを次のように見ました。
- http://github.com/benedikt/mongoid-tree
- http://github.com/saks/mongoid_acts_as_tree
- http://github.com/ticktricktrack/mongoid_tree
それらはすべて、階層を格納するために、埋め込まれているのではなく、リレーショナルアプローチを採用しているようです。これは、上記の両方のユースケースが遅いことを意味します(マップ/リデュースが必要になる可能性があります)。
誰かが似たようなことをしたか、何かアドバイスがありますか?理想的にはMongoidソリューションが大好きですが、Rubyドライバーにもドロップダウンできてうれしいです。
mongodb - MongoDB の map_reduce の前に「find」を通過させる方法はありますか?
次の行が機能します。
しかし、方法はありますか
date >= "2010-08-01" and date <= "2010-08-31"
?などの日付範囲をフィルター処理することもできます。