0

私はMongoDBの初心者です。

イベントを保存できるコレクションを作成する必要があります。イベント内のすべてのドキュメントには、FROM_TIMEキーとTO_TIMEキーがあり、その値は次のように変化する可能性があります。

  1. {FROM_TIME: "1939年9月1日"、TO_TIME:"1945年8月"}
  2. {FROM_TIME: "1947年8月15日"、TO_TIME:"1947年8月15日"}
  3. {FROM_TIME: "1857"、TO_TIME: "1858"}
  4. {FROM_TIME: "1944年12月7日11:00"、TO_TIME:"1944年12月7日14:40"}
  5. {FROM_TIME: "1971年1月"、TO_TIME:"1972年11月"}

FROM_TIMEとTO_TIMEがランダムに発生する場合、次のようなイベントを照会することは可能ですか。

  1. 19世紀後半の出来事のリスト
  2. 8月15日などのイベント一覧。

私はMongo(または他の非リレーショナル)DBで非常にナイーブなので、コレクションの構造を再考する必要がある場合に備えて、ここの人々にリードを提供するように依頼します。

***最初の編集はここから始まります

私は次のコードを書きました:

DBObject dbObject = new BasicDBObject();

        dbObject.put("EVNTATMC_ID", new ObjectId());
        dbObject.put("EVNTATMC_DESC", "Pearl Harbour");
        dbObject.put("EVNTATMC_FROM_TIME", Date.valueOf("1944-12-07"));
        dbObject.put("EVNTATMC_TO_TIME", Date.valueOf("1944-12-07"));
        dbObject.put("EVNTATMC_EVNTCMPD_ID", new ObjectId());
        dbObject.put("EVNTATMC_MTRL_ID", null);
        // dbObject.put("EVNTATMC_AUDIT", 1);
        dbObject.put("EVNTATMC_REMARKS", "First insert");

        eventAtomic.insert(dbObject);
dbObject = new BasicDBObject();

        dbObject.put("EVNTATMC_ID", new ObjectId());
        dbObject.put("EVNTATMC_DESC", "1857 Revolt");
        dbObject.put("EVNTATMC_FROM_TIME", "1857");
        dbObject.put("EVNTATMC_TO_TIME", "1858");
        dbObject.put("EVNTATMC_EVNTCMPD_ID", new ObjectId());
        dbObject.put("EVNTATMC_MTRL_ID", null);
        // dbObject.put("EVNTATMC_AUDIT", 1);
        dbObject.put("EVNTATMC_REMARKS", "Only years");

        eventAtomic.insert(dbObject);

ここでは、文字列を使用して不完全な日付を保存しましたが、1992、2001、2012のような年、または1月、9月、2010年8月のような月をどのように保存する必要がありますか?正しいことを期待しているかどうかわかりません!そのような「不完全な」タイミングをどのように処理しなければならないかについて教えてください。

***最初の編集はここで終了します

4

1 に答える 1

1

FROM_TIMEとTO_TIMEをDateTimeとして保存します。ここを参照してください: http ://www.mongodb.org/display/DOCS/Dates

次に、クエリを実行できます(たとえば、クエリを鳴らします)。https
://stackoverflow.com/a/8136834/131809で回答を参照して ください。

したがって、2012年8月15日のすべてのイベントについて:

var start = new Date(2012, 08, 15);
var end = new Date(2012, 08, 16);

db.myEventCollection.find({created_on: {$gte: start, $lt: end}});
于 2012-11-19T11:35:08.397 に答える