我需要帮助在mongo中建模我的数据.我的大部分经验都是关系数据库,我刚刚开始使用mongo.我正在为不同的事件建模数据.
可能最重要的是,在处理事件(CRUD操作)时,用户必须指定事件名称.
到目前为止,我可以看到几种方法可以做到这一点,我不想在将数据模型设置为"错误"方面犯下重大错误.
1)一个'事件'集合,包含所有事件的数据."事件"名称的索引.查询看起来像:
db.events.find({event: 'Summer Olympics 2012');
{event: 'Summer Olympics 2012', attributes: [{name: 'joe smith', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'jane doe', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'john avery', .... }
{event: 'Summer Olympics 2012', attributes: [{name: 'ted williams', .... }
db.events.find({event: 'Summer Olympics 2013'})
{event: 'Summer Olympics 2013', attributes: [{name: 'steve smith', .... }
{event: 'Summer Olympics 2013', attributes: [{name: 'amy jones', .... }
Run Code Online (Sandbox Code Playgroud)
2)每个新事件的集合,带有收集以跟踪所有事件名称.事件名称不需要索引,因为每个事件都存储在不同的集合中.
// multiple collections, create …Run Code Online (Sandbox Code Playgroud) 我们最近将应用程序从 Java 11 过渡到 Java 17。部署后,我们注意到某些记录存在差异,其中日期显示有一日差异 (+1)。这种情况尤其发生在 1940 年之前的记录中。我们的应用程序在 CEST 时区运行,日期在 MongoDB 中存储为 UTC。以下示例重点介绍了我们已发现问题的实例。
| D B | 爪哇11 | 爪哇17 |
|---|---|---|
| 1934-07-21T22:40:28.000+00:00 | 1934年7月22日 | 1934年7月21日 |
| 1897-08-06T23:40:28.000+00:00 | 1897-08-07 | 1897-08-06 |
提供的代码片段是用 Kotlin 编写的,在 Java 11 中产生令人满意的结果。但是,当使用 Java 17 执行时,相同的代码无法按预期运行。
fun main() { // Kotlin code
val date = Date(-1118625572000) //1934-07-21T22:40:28.000+00:00
println("Date: ${date.toInstant()?.atZone(ZoneId.of("Europe/Amsterdam"))!!.toLocalDate()}")
}
Run Code Online (Sandbox Code Playgroud)
Java 17 中是否有可用的解决方案来解决与这些类型的日期相关的问题?
我们尝试直接在数据库中更正这些记录,以确保有效日期的数量。
例如,
1934-07-21T22:40:28.000+00:00 --> 1934-07-22T00:00:00.000+00:00
1897-08-06T23:40:28.000+00:00 --> 1897-08-07T00:00:00.000+00:00
Run Code Online (Sandbox Code Playgroud)
然而,我们需要探索是否有一种方法可以在 Java 17 中专门处理这些类型的日期。
我试图将日期字符串转换为10毫秒(2018-11-02 6:05:59.1541162159 PM)到目前为止,但无法获得确切的日期.
要转换的代码:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class DateFormatCheck {
private static TimeZone tz = TimeZone.getTimeZone("Asia/Colombo");
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS aa");
public static void main(String[] a){
try {
Calendar cal = Calendar.getInstance(tz);
sdf.setCalendar(cal);
cal.setTime(sdf.parse("2018-11-02 6:05:59.1541162159 PM"));
Date date = cal.getTime();
System.out.println(date);
}catch (Exception e){
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Tue Nov 20 02:12:01 IST 2018
Run Code Online (Sandbox Code Playgroud) 我有以下附件列表要通过邮件发送
要发送小于 4 MB(1MBPDF, 210KBPDF) 的总文件大小,我可以使用这种方法,要发送大文件 (4MBPDF),我正在使用此处提供的解决方案
但是,当我尝试使用大文件方法(示例代码)将三个文件(1MBPDF、210KBPDF、4MBPDF)一起发送时,出现以下错误...
com.microsoft.graph.http.GraphServiceException:错误代码:ErrorAttachmentSizeShouldNotBeLessThanMinimumSize 错误消息:附件大小必须大于最小大小。
POST https://graph.microsoft.com/v1.0/me/messages/AAMkAGNhNWJlNjdkLWNkZTUtNDE1Yy1hYzkxLTkyOWI1M2U3NGQzOABGAAAAAAASIVxVSsS8RI-T3F73mdJZBwANqxyKMlQbSqZO439E21_mAAAAAAEPAAANqxyKMlQbSqZO439E21_mAAAVRY2dAAA=/attachments/microsoft.graph.createUploadSession SdkVersion:图表的Java / V2.3.2授权:[PII_REDACTED] { “attachmentItem”: {“附件类型”:“文件”,“内容[...]
400:错误请求 [...]
如果我在实施该方法时犯了任何错误,请告诉我,或者建议我发送多个大小混合的附件的任何解决方法。
谢谢
microsoft-graph-sdks microsoft-graph-mail microsoft-graph-api