Mongodb 如何将$currentdate推入字段数组?

Mongodb 如何将$currentdate推入字段数组?,mongodb,mongodb-query,mongodb-.net-driver,Mongodb,Mongodb Query,Mongodb .net Driver,假设我有一个节点文档,如下所示: { _id: 0, lastPing: ISODate("2016-12-27T00:37:31.828Z"), last10Pings: [ISODate("2016-12-27T00:35:31.828Z"), ISODate("2016-12-27T00:37:31.828Z"), ...] } lastPing将存储来自客户端的最新更新,而Last10Ping将存储来自客户端的最后10次更新 通过从客户端执行此查询,更新lastPing非常

假设我有一个节点文档,如下所示:

{
  _id: 0,
  lastPing: ISODate("2016-12-27T00:37:31.828Z"),
  last10Pings: [ISODate("2016-12-27T00:35:31.828Z"), ISODate("2016-12-27T00:37:31.828Z"), ...]
}
lastPing将存储来自客户端的最新更新,而Last10Ping将存储来自客户端的最后10次更新

通过从客户端执行此查询,更新lastPing非常容易:

db.nodes.update({_id: 0}, {$currentDate: {lastPing: true}});
db.nodes.update({_id: 0}, {$push: {last10Pings: {$each: [new Date()], $slice: 10}}});
当尝试从服务器更新时,更新最后10次ping也不是问题:

db.nodes.update({_id: 0}, {$currentDate: {lastPing: true}});
db.nodes.update({_id: 0}, {$push: {last10Pings: {$each: [new Date()], $slice: 10}}});

现在我遇到了一个难题。我想用客户机发出的查询将服务器时间(比如$currentDate)推到最后10次ping中。我无法从客户端使用
new Date()
,因为它将使用本地时间而不是服务器时间。

不确定您遇到了什么问题。您可以用自己的语言创建UTC日期,并将其传递到日期字段。@SagarReddy,以防我的应用程序运行在另一台与我的服务器时间不同的PC上。从客户端添加的时间不可靠。只需设置为UTC时间。现在是全球时间。这也是mongo db服务器中保存记录的方式。我在Raspbian上运行了Raspberry Pi。我在服务器上创建了一个到mongod的ssh隧道。树莓Pi本身没有RTC,有时无法从互联网上获得时间。我能够通过使用$currentDate的第一个查询对我的服务器进行ping。根据我的要求,我想保留最近10次ping的记录,因此我想进行一个查询,将$currentDate推入数组而不是单个字段。我认为没有办法获取数组的$currentDate,但您可以从服务器获取当前时间。看看这个。希望有帮助。不确定你遇到了什么问题。您可以用自己的语言创建UTC日期,并将其传递到日期字段。@SagarReddy,以防我的应用程序运行在另一台与我的服务器时间不同的PC上。从客户端添加的时间不可靠。只需设置为UTC时间。现在是全球时间。这也是mongo db服务器中保存记录的方式。我在Raspbian上运行了Raspberry Pi。我在服务器上创建了一个到mongod的ssh隧道。树莓Pi本身没有RTC,有时无法从互联网上获得时间。我能够通过使用$currentDate的第一个查询对我的服务器进行ping。根据我的要求,我想保留最近10次ping的记录,因此我想进行一个查询,将$currentDate推入数组而不是单个字段。我认为没有办法获取数组的$currentDate,但您可以从服务器获取当前时间。看看这个。希望能有帮助。