2017-11-29 8 views
0

最初の文書が1で、新しい文書が挿入されるときにカウントが増加する数値カウントインデックスを作成できるかどうかは疑問でした。可能であれば、mongoimport経由でインポートされたドキュメントにも適用できますか? db.collection.createIndex({index : 1})で作成してインデックスを作成しましたが、適用されていないようです。MongoDB数値インデックス

+0

いいえ、mongodbには自動インクリメント整数インデックスはありません。 –

+0

何かを同じ効果にするつもりはありますか? –

+0

'findAndModify'と同様のことが実現できますが、ネイティブサポートよりもはるかに信頼性が低く便利です。 –

答えて

0

ObjectIdを_idフィールドとして使用することを強くお勧めします。これは、分散システムのための価値があるという利点がありますが、作成された日付にも基づいています。また、MongoDBの内部にインデックスが組み込まれています。

Morphiaを使用した例:

Date d = ...; 
QueryImpl<MyClass> query = datastore.createQuery(MyClass); 
query.field("_id").greaterThanOrEq(new ObjectId(d)); 
query.sort("_id"); 
query.limit(100); 
List<MyClass> myDocs = query.asList(); 

これは、作成順に日付d以降に作成されたすべての文書を取得します。これは非常に効率的に前のバッチから最後の文書のIDに基づいて、次のバッチをロードします

query.field("_id").greaterThan(lastDoc.getId()); 

:に変更し、次のバッチをロードするために

+0

ねえニック、私はすべての日付をうまく返す。しかし私の問題は、私が戻ってきた文書を分割して、それらの断片だけを読みたいときに、私が望むものに到達するまでそれらをリループする必要があるときです。私はどのようにすべてのドキュメントをintergerに割り当てるのか分からないので、ループや壊れの代わりにelseのロジックを使用することができます。 –

+0

私はさらに事例を使って投稿を更新しました。 –

関連する問題