这是MongoDB
中的文档,我需要限制输出:
{
"_id": ObjectId("55880fb8c3addd201ee2f70e"),
"title": "Sales",
"level1": [{
"name": "Master",
"link": "/sales/master"
}, {
"name": "eCommerce",
"link": "/sales/ecommerce"
}]
}
我的搜索查询是:
db.collection.find({
title: "Sales",
"level1.name": "Master"
}, {
"title": 1,
"level1.name": 1,
"level1.name": "Master"
})
这是预期的输出:
{
"_id": ObjectId("55880fb8c3addd201ee2f70e"),
"title": "Sales",
"level1": [{
"name": "Master",
"link": "/sales/master"
}]
}
答案 0 :(得分:0)
请尝试以下查询:
db.collection.find({title :"Sales",
level1: {$elematch: {name" : "Master"}}},
{title : 1, level1.$ : 1});
答案 1 :(得分:0)
您可以使用aggregation class SbyteToBoolConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value if sbyte)
return ConvertSbyteToBool((sbyte)value);
else
return ConvertBoolToSbyte((bool)value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool)
return ConvertBoolToSbyte((bool)value);
else
return ConvertSbyteToBool((sbyte)value);
}
...
}
数组$unwind来获得预期结果,如下所示:
level1
如果您希望所有人都在一个阵列下,您可以将其分组为:
db.collection.aggregate({$unwind:"$level1"},{$match:{"level1.name":"Master","title" :"Sales"}})