如何在mongodb中找到数组大小大于1的文档
Posted
技术标签:
【中文标题】如何在mongodb中找到数组大小大于1的文档【英文标题】:How to find the document in mongodb where array size is greater than 1 【发布时间】:2020-12-12 17:38:03 【问题描述】:我想查找所有存在且数组大小大于 1 的文档
我的 MongoDB 集合看起来像
"_id" : ObjectId("5eaaeedd00101108e1123452"),
"type" : ["admin","teacher","student"]
"_id" : ObjectId("5eaaeedd00101108e1123453"),
"type" : ["student"],
我如何找到超过 1 种类型的文档
【问题讨论】:
从 MongoDB 4.4 开始,$where 不再支持已弃用的带作用域的 BSON 类型 javascript(即 BSON 类型 15)。从版本 4.2.1 开始,不推荐使用带有 $where 函数范围的 JavaScript。 Ref docs.mongodb.com/manual/reference/operator/query/where 所以当你升级你的版本时,它不会工作 【参考方案1】:db.collection.find(type: $gt: 1)
只需更改集合的名称
gt
表示更伟大,你可以看到更多关于它here
【讨论】:
【参考方案2】:你可以做这样的事情。这是工作版本> 4.2
db.collection.find(
$expr:
$gt: [
$size: "$type"
,
1
]
)
工作Mongo playground
如果你用得少,你可以做一些类似的事情
db.collection.find(
type:
$gt:
$size: 1
)
【讨论】:
【参考方案3】:-
您可以使用$gt
db.collectionName.find("type": $gt: 1 );
-
您可以使用$where
db.collectionName.find( $where: "type > 1" );
【讨论】:
【参考方案4】:这个问题唯一可行的解决方案如下:
db.collection.find(
$expr:
$gt: [
$size: "$arrayfield"
,
1
]
)
所有其他解决方案都不起作用。试过了。
【讨论】:
以上是关于如何在mongodb中找到数组大小大于1的文档的主要内容,如果未能解决你的问题,请参考以下文章
如何从 MongoDB 集合中存在的一组文档中找到数组的最大长度?
MongoDB:如何在 100 个集合中找到 10 个随机文档?