小编Viv*_*dev的帖子

Mongodb:多个集合或一个带索引的大集合

我需要帮助在mongo中建模我的数据.我的大部分经验都是关系数据库,我刚刚开始使用mongo.我正在为不同的事件建模数据.

  1. 每个'事件'都有相同的字段.
  2. 每个"事件"将有数百到数百万个文档/行
  3. 事件是动态的,即将根据需要创建新事件.也许可以创建一个新的"2016年夏季奥运会"活动.

可能最重要的是,在处理事件(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)

mongodb

41
推荐指数
1
解决办法
3万
查看次数

迁移到Java 17后,日期显示不准确

我们最近将应用程序从 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)

Java11 输出:
代码输出显示“日期:1934-07-22”

Java17 输出:
代码输出显示“日期:1934-07-21”

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 中专门处理这些类型的日期。

java timezone mongodb java.util.date java-17

4
推荐指数
1
解决办法
263
查看次数

Java SimpleDateformatter在秒后有10位小数,无法转换为Date

我试图将日期字符串转换为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)

java milliseconds simpledateformat datetime-parsing

0
推荐指数
1
解决办法
198
查看次数

使用 Graph API(版本 2.3.2)发送带有混合大小附件(> 4MB)的邮件

我有以下附件列表要通过邮件发送

  • 210KBPDF.pdf
  • 1MBPDF.pdf
  • 4MBPDF.pdf

要发送小于 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

0
推荐指数
1
解决办法
401
查看次数