我现在正在使用mongodb.
我有blogpost集合,blogpost有一个标签,这是一个数组,例如
blogpost1.tags = ['tag1', 'tag2', 'tag3', 'tag4', 'tag5']
blogpost2.tags = ['tag2', 'tag3']
blogpost3.tags = ['tag2', 'tag3', 'tag4', 'tag5']
blogpost4.tags = ['tag1', 'tag4', 'tag5']
Run Code Online (Sandbox Code Playgroud)
我该怎么做这些搜索
我正在对包含此类文档的集合运行查询。
{"name": "Daniel", "tags": ["person", "owner", "father"]},
{"name": "Jane", "tags": ["person", "owner", "mother"]},
{"name": "Jimmy", "tags": ["person", "owner", "son"]}
Run Code Online (Sandbox Code Playgroud)
现在,如果我想查找与标签人和所有者匹配的所有文档,我会这样做
var match = ['person', 'owner'];
model.find({'tags': {$all: match}});
Run Code Online (Sandbox Code Playgroud)
现在我需要执行以下操作:
在单个查询中执行此操作的最有效方法是什么?
提前致谢,
D
我正在寻找对MongoDB 中的常规(即非聚合)查询执行相当于$setIsSubset http://docs.mongodb.org/manual/reference/operator/aggregation/setIsSubset/的操作。我怎样才能做到这一点?
假设我有文件
{ 'x' : ['A', 'B'] }
{ 'x' : ['A', 'D'] }
Run Code Online (Sandbox Code Playgroud)
然后
{ 'x' : ['A', 'B'] }
{ 'x' : ['A', 'D'] }
Run Code Online (Sandbox Code Playgroud)
我想做一个
find({"x" : {'$setIsSubSet':filter}}),只希望能回来
{ 'x' : ['A', 'B'] }
Run Code Online (Sandbox Code Playgroud)
似乎大多数条件命令都与任何不匹配。 我也希望它是一个子集,因此它似乎$and并$all不会匹配[A,B]到[A,B,C]。
我有一个模式集合(猫鼬)说:
{
name : String,
age : Number,
params : [Number] // e.g. : params = [1,21,45,32,0] , usually they are very small arrays
}
Run Code Online (Sandbox Code Playgroud)
该集合有1000多种此类文件
说,我有一个 baseParams = [1,20,30,4,7];
我想使用聚合并找到其参数包含baseParams数组中大多数数字的文档的id,如max(对于每个doc交集(baseParams,params))
我终于需要按年龄排序的前5个文件的_id:1
任何人的想法?