مواعيد روبي Mongodb
-
27-09-2019 - |
سؤال
لديّ مجموعة مع فهرس على: Created_AT (والتي يجب أن تكون في هذه الحالة بالذات تاريخًا)
من Rails ما هي الطريقة الصحيحة لحفظ الإدخال ثم استرداده حسب التاريخ؟
أحاول شيئًا مثل:
النموذج: الحقل: create_at ،: type => time
النصي:
col.create (: Create_at => time.parse (other_model.created_at) .to_s
و
col.find (: all ،: ظروف => {: create_at => time.parse (نفس الشيء)})
وهي لا تعيد أي شيء
المحلول
برنامج تشغيل Mongo و Orms مختلف كائنات الوقت والوقت وكائنات DateTime على ما يرام ؛ لا يوجد سبب لإلقاءهم على الأوتار.
Col.create(:created_at => another_model.created_at)
والاكتشاف:
Col.all(:created_at => another_model.created_at)
لا ترغب في وضع سلاسل ، لأن التواريخ يتم تخزينها داخليًا ككائنات تاريخ BSON ، ويتم فهرستها وتفتيشها على هذا النحو. إذا قمت بحفظها كقواسل ، فلن تتمكن من القيام بأشياء مثل مقارنات أكبر من/أقل/النطاق بشكل فعال.
نصائح أخرى
Col.create(:created_at => Time.parse(another_model.created_at).to_s)
سيمر هذا الخط كائن الوقت الخاص بك كسلسلة ، خلع to_s
لإرسالها إلى طبقة تحليل النوع في ORM (mongomapper أو mongoid) ككائن زمني. هذا هو الخطأ الوحيد الذي يمكنني رؤيته الذي سيؤدي إلى عدم عمله.