ThinkPHP5如何对数组进行分页
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP5如何对数组进行分页相关的知识,希望对你有一定的参考价值。
参考技术A function array_page($array,$rows) import("ORG.Util.Page"); //导入分页类 $count=count($array); $Page=new Page($count,$rows); $list=array_slice($array,$Page->firstRow,$Page->listRows); return $list; //使用该函数即可实现分页使用 MongoDB .Net 驱动程序对存储在文档字段中的数组进行分页
【中文标题】使用 MongoDB .Net 驱动程序对存储在文档字段中的数组进行分页【英文标题】:Pagination on array stored in a document field using MongoDB .Net Driver 【发布时间】:2022-01-11 11:09:18 【问题描述】:如何使用 C# 和 MongoDB .Net 驱动程序在 animals
字段中应用分页?
架构是:
[
id: 1,
name: "Tom",
animals: ["cat", "dog", "fish", "bear", "dog1", "fish1", "bear1",]
,
id: 2,
name: "Rob",
animals: ["shark", "snake", "fish", "bear", "panda"]
,
id: 3,
name: "Matt",
animals: ["cat", "fish", "bear"]
]
here 给出了解决方案,但我发现很难在 C# 中实现。
下面是我的代码
var bsonSearchParams = new BsonDocument
new BsonElement ( "id" , id),
new BsonElement ( "animals", " $slice: [ 0, 3 ] " )
;
var result = await collection.Find(bsonSearchParams).FirstOrDefaultAsync();
return result;
我期待结果
id: 1,
name: "Tom",
animals: ["cat", "dog", "fish"]
【问题讨论】:
【参考方案1】:您的 bsonSearchParams
不正确,因为您在投影中包含了 slice
逻辑。
你需要.Slice()
,这是ProjectDefinition
的扩展方法。
public static ProjectionDefinition<TDocument> Slice<TDocument>(this ProjectionDefinition<TDocument> projection, FieldDefinition<TDocument> field, int skip, int? limit = null)
您的源代码应如下所示:
var bsonSearchParams = new BsonDocument
new BsonElement( "id" , id)
;
var bsonProjection = Builders<BsonDocument>.Projection
.Slice("animals", 0, 3);
var result = await collection.Find(bsonSearchParams)
.Project(bsonProjection)
.FirstOrDefaultAsync();
示例代码和输出
【讨论】:
以上是关于ThinkPHP5如何对数组进行分页的主要内容,如果未能解决你的问题,请参考以下文章