数组中的芒果搜索
Mango search in Arrays
我的文档结构如下:
{
"Calibration": {
"Presettings": {
"Date": [
{
"Value": "2016-09-02 10:11",
"Type": "generated"
},
{
"Value": "2016-09-05",
"Type": "schedule",
"Duration": "5"
}
]
}
}
}
我必须如何定义查询对象的选择器部分以获取日期(值)小于或等于给定日期且 Type=='generated'
的所有文档?
首先,您需要创建索引。我建议您在 Calibration.Presettings.Date field
.
上创建一个索引
您可以使用以下 JSON 对象来创建它:
{
"index": {
"fields": [
"_id",
"Calibration.Presettings.Date.[].Type"
]
},
"type": "json"
}
所以选择器应该是这样的:
{
"selector": {
"Calibration.Presettings.Date": {
"$elemMatch": {
"$and": [
{
"Type": "generated"
},
{
"Value": {
"$gte": "2016-09-01"
}
}
]
}
}
}
}
我们在字段 Calibration.Pressettings.Date 上执行查询,这是一个 数组 。由于它是一个数组,我们必须使用 $elemMatch 运算符。
然后,我们有 $and 值和类型的条件。
日期的类型必须生成。 With 可以使用 $eq 运算符或简单地使用这个简单的语法:{"field":"value"}
.
最后,日期的值必须大于或等于 X 日期。我们可以使用 $gte 运算符。
我的文档结构如下:
{
"Calibration": {
"Presettings": {
"Date": [
{
"Value": "2016-09-02 10:11",
"Type": "generated"
},
{
"Value": "2016-09-05",
"Type": "schedule",
"Duration": "5"
}
]
}
}
}
我必须如何定义查询对象的选择器部分以获取日期(值)小于或等于给定日期且 Type=='generated'
的所有文档?
首先,您需要创建索引。我建议您在 Calibration.Presettings.Date field
.
您可以使用以下 JSON 对象来创建它:
{
"index": {
"fields": [
"_id",
"Calibration.Presettings.Date.[].Type"
]
},
"type": "json"
}
所以选择器应该是这样的:
{
"selector": {
"Calibration.Presettings.Date": {
"$elemMatch": {
"$and": [
{
"Type": "generated"
},
{
"Value": {
"$gte": "2016-09-01"
}
}
]
}
}
}
}
我们在字段 Calibration.Pressettings.Date 上执行查询,这是一个 数组 。由于它是一个数组,我们必须使用 $elemMatch 运算符。
然后,我们有 $and 值和类型的条件。
日期的类型必须生成。 With 可以使用 $eq 运算符或简单地使用这个简单的语法:{"field":"value"}
.
最后,日期的值必须大于或等于 X 日期。我们可以使用 $gte 运算符。