以Collection 为例:
{
"event_type" : "ENTRY",
"DateTime" : ISODate("2024-02-08T00:00:00.000+0000"),
},
{
"event_type" : "ENTRY",
"DateTime" : ISODate("2024-02-09T00:00:00.000+0000"),
},
{
"event_type" : "ENTRY",
"DateTime" : ISODate("2024-02-10T00:00:00.000+0000"),
},
{
"event_type" : "DELETE",
"DateTime" : ISODate("2024-02-10T00:00:00.000+0000"),
},
{
"event_type" : "DELETE",
"DateTime" : ISODate("2024-02-24T00:00:00.000+0000"),
}
我想要做的是查找与任何删除中的日期匹配的所有条目
我的shell脚本:
var col = db.getCollection("test_collection");
var delete_dates = col.find({"event_type" : "DELETE" }).map(function(x) {return x.DateTime});
col.find({"event_type" : "ENTRY", "DateTime" : {$in : delete_dates}});
不出所料,我可以看到数组DELETE_DATES有两个值,并且它们都是"ISODate"类型.但是,最后一行不返回任何内容.
如果我用{$in : [ ISODate("2024-02-10T00:00:00.000+0000"), ISODate("2024-02-24T00:00:00.000+0000")]}
替换{$in : delete_dates}
,它会像预期的那样工作,并且我会得到一个结果.
那么我搞砸了什么呢?如何在匹配的$in部分中使用该数组?