mongodb - $ne:比较输入日期和数组中的字段
问题描述
我为此创建了一个测试集合,它看起来像这样:
{
"createDate": ISODate("2021-01-04T15:00:00.000+00:00"),
"arr": [
{
"date": ISODate("2021-01-04T15:00:00.000+00:00")
}
]
},
{
"createDate": ISODate("2021-01-04T16:00:00.000+00:00"),
"arr": [
{
"date": ISODate("2021-01-04T15:00:00.000+00:00")
}
]
}
唯一的区别是:第一个条目的日期相同,第二个条目的日期不同。
现在我想创建一个查询来查找两个日期不同的所有条目。我用这个试过:
db.getCollection('test').find(
{
"createDate": { $ne: "arr.0.date" }
}
)
不幸的是,这个查询为我提供了两个条目。我究竟做错了什么?
解决方案
它需要匹配$expr表达式,比较来自同一文档的字段,以访问来自特定索引的元素使用$arrayElemAt
db.getCollection('test').find({
$expr: {
$ne: [
"$createDate",
{ $arrayElemAt: ["$arr.date", 0] }
]
}
})
推荐阅读
- mysql - 如何在mysql查询中选择文本列的一部分作为新列
- javascript - 多个模块上的 webpack IgnorePlugin()
- java - 如何显示整数值而不是十进制值
- android - 不同的库依赖同一个库,编译时会提示“重复类”。如何排除这个重复的类?
- python - 在扩展测试类的同时执行 python 子进程
- powerbi - Power BI 开关功能
- android - com.google.zxing.NotFoundException - 在 Android 中从图库中扫描 QR 图像时
- xamarin.forms - 在 xamarin.forms UI 中使用 Detect Shake 功能多次调用
- c# - 更改几个相互影响的editText框中的值
- c# - Bootrstrap网格布局不适用于四个gridview表C#