gpt4 book ai didi

arrays - 在 mongoDB 中使用数组索引获取数组元素

转载 作者:可可西里 更新时间:2023-11-01 09:25:02 26 4
gpt4 key购买 nike

考虑 mongoDB 中的以下集合:

{a:[4,2,8,71,21]}
{a:[24,2,2,1]}
{a:[4,1]}
{a:[4,2,8,21]}
{a:[2,8,71,21]}
{a:[4,2,8]}

如何最轻松地获得以下结果:

获取数组的第n个元素

{a:4}
{a:24}
{a:4}
{a:4}
{a:2}
{a:4}

获取元素2到4

{a:[8,71,21]}
{a:[2,1]}
{a:[]}
{a:[8,21]}
{a:[71,21]}
{a:[8]}

和其他类似的查询。

最佳答案

您正在寻找的是 $slice projection .

获取数组开头的多个元素

您可以传递一个简单的 $limit 并返回多个值(例如 1):

> db.mycoll.find({}, {_id: 0, a: { $slice: 1}})
{ "a" : [ 4 ] }
{ "a" : [ 24 ] }
{ "a" : [ 4 ] }
{ "a" : [ 4 ] }
{ "a" : [ 2 ] }
{ "a" : [ 4 ] }

获取一系列元素

您可以传递一个参数为 ( $skip, $limit ) 的数组。

注意:要匹配您的预期输出,您必须找到元素 3 到 5(跳过前 2 个元素,返回接下来的 3 个):

> db.mycoll.find({}, {_id: 0, a: { $slice: [2,3]}})

{ "a" : [ 8, 71, 21 ] }
{ "a" : [ 2, 1 ] }
{ "a" : [ ] }
{ "a" : [ 8, 21 ] }
{ "a" : [ 71, 21 ] }
{ "a" : [ 8 ] }

获取数组的第n个元素

将元素数量传递给 $skip 并将值 1 作为限制。

例如,要查找第二个元素,您需要跳过 1 个条目:

> db.mycoll.find({}, {_id: 0, a: { $slice: [1,1]}})

{ "a" : [ 2 ] }
{ "a" : [ 2 ] }
{ "a" : [ 1 ] }
{ "a" : [ 2 ] }
{ "a" : [ 8 ] }
{ "a" : [ 2 ] }

注意 $slice 运算符:

  • 总是返回一个数组
  • 将为匹配查找条件的文档返回一个空数组,但为 $slice 选择返回一个空结果(例如,如果您要求只有 2 个元素的数组的第 5 个元素)

关于arrays - 在 mongoDB 中使用数组索引获取数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13652197/

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