【发布时间】:2020-10-12 14:22:04
【问题描述】:
我有一个这样的数据库集合。
{
"name" : "test",
"gender" : "male",
"attributes" : [
{
"field_id" : "123",
"field_value" : "['Public']"
},
{
"field_id" : "124",
"field_value" : "true"
},
{
"field_id" : "125",
"field_value" : "['Single']"
},
]
},
{
"name" : "test2",
"gender" : "male",
"attributes" : [
{
"field_id" : "125",
"field_value" : "['Married']"
},
]
},
{
"name" : "test3",
"gender" : "male",
"attributes" : [
{
"field_id" : "123",
"field_value" : "['Public']"
},
{
"field_id" : "125",
"field_value" : "['Married']"
},
]
},
{
"name" : "test4",
"gender" : "male",
"attributes" : [
{
"field_id" : "123",
"field_value" : "['Private']"
},
]
},
{
"name" : "test4",
"gender" : "male",
"attributes" : [
]
}
]
我想获取所有field_id 为123 和field_value 为"Public" 的记录; + 记录其中field_id
123 不存在于属性下。
我试过了
var condition = { "attributes" : {$elemMatch:{field_id:"123",field_value:{ $in:["Public"] }}}};
queryObj.push(condition);
这可以很好地获取具有field_id 为123 和field_value 为Public 的记录
但我也想获取 field_id as 123 不存在的记录,我试过了
var condition1 =
{ "attributes" : {$elemMatch:{field_id:"123",$exists:false}}}
queryObj.push(condition1);
但它返回错误,因为它的语法不正确。 请指导我如何根据需要获取。
这是预期的输出,因为这些记录只有 Public 123 field_id 或 field_id 的值,因为 123 在这些记录中不存在。
[
{
"name" : "test",
"gender" : "male",
"attributes" : [
{
"field_id" : "123",
"field_value" : "['Public']"
},
{
"field_id" : "124",
"field_value" : "true"
},
{
"field_id" : "125",
"field_value" : "['Single']"
},
]
},
{
"name" : "test3",
"gender" : "male",
"attributes" : [
{
"field_id" : "123",
"field_value" : "['Public']"
},
{
"field_id" : "125",
"field_value" : "['Married']"
},
]
},
{
"name" : "test2",
"gender" : "male",
"attributes" : [
{
"field_id" : "125",
"field_value" : "['Married']"
},
]
},
{
"name" : "test4",
"gender" : "male",
"attributes" : [
]
}
]
【问题讨论】:
-
您的预期输出是什么?
-
@CuongLeNgoc 我已经更新了问题并在其中添加了预期的输出。
标签: node.js mongodb mongoose mongodb-query