在mongoDB

时间:2018-02-09 19:42:24

标签: mongodb datetime mongodb-query aggregation-framework runcommand

我在MongoDB的runCommand中遇到日期和日期时间问题。它一直将我的日期保存为null。我无法使用ISODate(),因为它会出错。变量$ date没有显示错误,但它存储了一个空值。

这是我从Java应用程序执行的mongoDB查询字符串:

{
  q: {
    'person_id': '1003', 'authoriz.auth_id': { $ne: '1025' }  },
  u: {
    $addToSet: {
      'authoriz': {
        'decision': "TRUE",
        'start_date': { $date: "2018-02-09 00:00:00.0" },
        'decision_id': 125,
        'decision_dsc': "PERMITED",
        'block_id': "1025"
      }
    },
    $currentDate: {
      'last_modified': true
    }
  },
  multi: false,
  upsert: false
}

在Java中:

DBObject dbObject = (BasicDBObject) JSON.parse(query);
CommandResult result =anyDB.command(dbObject);

而不是保存2018-02-09 00:00:00.0'字段start_date中的值一直存储空值。

您能否帮助我设置查询字符串以保存日期? 还有其他选项如何在runCommand中使用日期?

1 个答案:

答案 0 :(得分:1)

您没有ISO投诉字符串,因此解析器返回null。

使用ISO字符串,它会没事的。更多here

这样的东西
"'start_date': { $date: \"2018-02-09T00:00:00.000Z\" }"

Btw命令是低级别界面,您应该使用update中提供的findAndModifyDBCollection等方法。