gpt4 book ai didi

arrays - 如何在 MongoDB 中查找数组大小在一定范围内的文档?

转载 作者:可可西里 更新时间:2023-11-01 10:03:45 26 4
gpt4 key购买 nike

给定以下文档结构:

{
_id : Mongo ID,
data : [someData1, someData2, ..., someDataN]
}

我想获取 data 的所有文档大小介于 a 之间和 b (严格的正整数,考虑 a < b 始终为真)。
我首先想到使用 $size ,但 Mongo 文档指出:

$size does not accept ranges of values. To select documents based on fields with different numbers of elements, create a counter field that you increment when you add elements to a field.

(强调我的)

如何使用 data 检索所有文档a 之间的长度数组和 b不使用计数器?


相关但未解决:

  • answer这建议使用计数器
  • question它询问如何查询内部长度并得到了很多答案
  • answer建议使用:{ 'data.' + b : { $exists : true } }但我不知道它有多可靠以及它如何适用于一个范围
  • question关于如何查找具有最小数组长度的文档

最佳答案

您可以通过在查询中包含多个术语并以编程方式构建它来使用 $exists 运算符方法:

var startKey = 'data.' + (a-1);
var endKey = 'data.' + b;
var query = {};
query[startKey] = {$exists: true};
query[endKey] = {$exists: false};
db.test.find(query);

例如,对于 a=1b=3,您最终会得到一个如下所示的 query 对象:

{
"data.0" : {
"$exists" : true
},
"data.3" : {
"$exists" : false
}
}

第一部分保证至少有a个元素,第二部分保证不超过b个元素。

关于arrays - 如何在 MongoDB 中查找数组大小在一定范围内的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30124510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com