我有一个数据集,我试图创建动态查询。这是数据集的一个示例。
db.test.insert({
"_id" : ObjectId("58e574a768afb6085ec3a388"),
"place": "A",
"tests" : [
{
"name" : "1",
"evaluation" : [
{
"aHigh" : [1,2],
"aLow" : [ ],
"zHigh" : [ ],
"zLow" : [1,3]
},
{
"aHigh" : [1,4],
"aLow" : [2],
"zHigh" : [ 3],
"zLow" : [ ]
},
{
"aHigh" : [ ],
"aLow" : [1,2,3],
"zHigh" : [1,2,3,4],
"zLow" : [ ]
},]
}
]
})
db.test.insert({
"_id" : ObjectId("58eba09e51f7f631dd24aa1c"),
"place": "B",
"tests" : [
{
"name" : "2",
"evaluation" : [
{
"aHigh" : [2],
"aLow" : [3 ],
"zHigh" : [ ],
"zLow" : [1,2,3,4]
},
{
"aHigh" : [ ],
"aLow" : [ ],
"zHigh" : [ ],
"zLow" : [3,4]
},
{
"aHigh" : [1,2],
"aLow" : [3,4],
"zHigh" : [ ],
"zLow" : [1,2,3,4]
},]
}
]
})
总体设置使用nodejs
和angularjs
,但该问题仅适用于mongoDB
。我有一组选择器框,其中填充了每个特定字段中包含的值。例如,"place"
有一个包含值"A"
和"B"
的选择器。
搜索框的默认行为是它们具有占位符,并且没有选定的数据传递给模型。这意味着当我使用模型的输出将加载查询传递给mongoDB
时,我实际上传递了{}
。但是,当我在搜索框中进行选择时,它会传递一个值。
在我的mongoDB
查询中,我必须使用aggregate
(出于超出问题范围的原因),因此我必须使用$match
。这是一些示例代码。
db.test.aggregate([
{ $match: { place: {$in: [ <whateverQuery> ]}}},
{ $unwind: "$tests"},
{ $sortByCount: "$tests.name"}
])
预期输出如下:
{ "_id" : "1", "count" : 1 }
{ "_id" : "2", "count" : 1 }
如何修改我的方法,以便不向查询传递任何内容?