PHP*_*Pst 3 arrays find mongodb
考虑在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]}
Run Code Online (Sandbox Code Playgroud)
如何以最轻松的方式获得以下结果:
获取数组的第n个元素
{a:4}
{a:24}
{a:4}
{a:4}
{a:2}
{a:4}
Run Code Online (Sandbox Code Playgroud)
获取元素2到4
{a:[8,71,21]}
{a:[2,1]}
{a:[]}
{a:[8,21]}
{a:[71,21]}
{a:[8]}
Run Code Online (Sandbox Code Playgroud)
和其他类似的查询.
您正在寻找的是$slice投影.
您可以传递一个$limit带有多个值的简单返回(例如1):
> db.mycoll.find({}, {_id: 0, a: { $slice: 1}})
{ "a" : [ 4 ] }
{ "a" : [ 24 ] }
{ "a" : [ 4 ] }
{ "a" : [ 4 ] }
{ "a" : [ 2 ] }
{ "a" : [ 4 ] }
Run Code Online (Sandbox Code Playgroud)
您可以传递参数为($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 ] }
Run Code Online (Sandbox Code Playgroud)
将元素数量传递给$ skip,限制值为1.
例如,要查找第二个元素,您需要跳过1个条目:
> db.mycoll.find({}, {_id: 0, a: { $slice: [1,1]}})
{ "a" : [ 2 ] }
{ "a" : [ 2 ] }
{ "a" : [ 1 ] }
{ "a" : [ 2 ] }
{ "a" : [ 8 ] }
{ "a" : [ 2 ] }
Run Code Online (Sandbox Code Playgroud)
$slice操作员: