假设我在MongoDB中有一组文档。是否存在查询字符串是否在值列表中的查询,如果存在,则仅根据特定键的值返回不同的文档?
{
"_id" : ObjectId("5504d11b6946aa2b4dff7e99"),
"states" : [
"AL",
"AZ",
"TX"
],
"name" : "Foo",
"rating" : "NR",
"url" : "www.domain.com",
};
{
"_id" : ObjectId("5504d11b6946aa2b4dff7e98"),
"states" : [
"AL",
"NJ",
"NY"
],
"name" : "Bar",
"rating" : "NR",
"url" : "www.domain.com",
};
{
"_id" : ObjectId("5504d11b6946aa2b4dff7e97"),
"states" : [
"AL",
"AZ",
"TX"
],
"name" : "The Grinch",
"rating" : "NR",
"url" : "www.domain.net",
}
例如,
如果AL
位于states
中,则仅返回网址不同的集合 -
将返回上述示例中的第一个和最后一个集合。
db.collections.find({"states":{'$in':["AL"]}})
是我用来查找列表中的状态。
db.collections.aggregate({ $group: { _id: '$url', n: { $max: '$states' } } })
。
结果就是我用来获取基于域的不同集合。
我遇到麻烦的是将两者合并在一个声明中。
答案 0 :(得分:0)
看起来像这样:
db.collection.aggregate([
{$match: {$states: 'AL'}},
{$group:{_id: '$url'}}
]);
$max
和$in
是您通话中的不必要开支。