比较MongoDB中的两个日期字段

在我的夹中,每个文档都有2个修改和同步的日期。我想查找已修改>同步,或不存在同步的内容。

我试过了

{'modified': { $gt : 'sync' }}

但没有显示我的期望。有任何想法吗?

谢谢

回答:

您不能将一个字段与具有正常查询匹配的另一个字段的值进行比较。但是,您可以使用聚合框架执行此操作:

db.so.aggregate( [

{ $match: …your normal other query… },

{ $match: { $eq: [ '$modified', '$sync' ] } }

] );

我在其中输入“您的其他常规查询”,因为您可以使该位使用索引。因此,如果您只想对该name字段所在的文档执行此操作,则charles可以执行以下操作:

db.so.ensureIndex( { name: 1 } );

db.so.aggregate( [

{ $match: { name: 'charles' } },

{ $project: {

modified: 1,

sync: 1,

name: 1,

eq: { $cond: [ { $gt: [ '$modified', '$sync' ] }, 1, 0 ] }

} },

{ $match: { eq: 1 } }

] );

用输入:

{ "_id" : ObjectId("520276459bf0f0f3a6e4589c"), "modified" : 73845345, "sync" : 73234 }

{ "_id" : ObjectId("5202764f9bf0f0f3a6e4589d"), "modified" : 4, "sync" : 4 }

{ "_id" : ObjectId("5202765b9bf0f0f3a6e4589e"), "modified" : 4, "sync" : 4, "name" : "charles" }

{ "_id" : ObjectId("5202765e9bf0f0f3a6e4589f"), "modified" : 4, "sync" : 45, "name" : "charles" }

{ "_id" : ObjectId("520276949bf0f0f3a6e458a1"), "modified" : 46, "sync" : 45, "name" : "charles" }

返回:

{

"result" : [

{

"_id" : ObjectId("520276949bf0f0f3a6e458a1"),

"modified" : 46,

"sync" : 45,

"name" : "charles",

"eq" : 1

}

],

"ok" : 1

}

如果您想要更多字段,则需要将它们添加到中$project

以上是 比较MongoDB中的两个日期字段 的全部内容, 来源链接: utcz.com/qa/431482.html

回到顶部