相关疑难解决方法(0)

如何检查数组字段是否包含MongoDB中的唯一值或另一个数组?

我现在正在使用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)

我该怎么做这些搜索

  1. 包含'tag1'
  2. 包含['tag1','tag2'],
  3. 包含任何['tag3','tag4']

mongodb

141
推荐指数
2
解决办法
8万
查看次数

MongoDB:$all 带有空数组...

我正在对包含此类文档的集合运行查询。

{"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)

现在我需要执行以下操作:

  1. 当匹配有值时,返回与这些值匹配的所有文档(已完成)
  2. 当match为空[]时,返回所有文档。

在单个查询中执行此操作的最有效方法是什么?

提前致谢,

D

find mongodb

5
推荐指数
1
解决办法
2033
查看次数

$setIsSubset 用于 Mongo 中的常规查询

我正在寻找对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]

mongodb mongodb-query

2
推荐指数
1
解决办法
1374
查看次数

mongodb中的数组交集与聚合框架

我有一个模式集合(猫鼬)说:

{
  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

任何人的想法?

mongoose mongodb node.js aggregation-framework

1
推荐指数
1
解决办法
1076
查看次数