Времена изменились, и я считаю, что вы можете достичь того, что спрашивает OP, используя агрегацию с $sort
, $group
и $project
. Для моей системы мне также нужно было получить некоторую информацию о пользователе из моей коллекции users
. Надеюсь, это тоже может ответить на любые вопросы. Ниже приведена совокупная труба. Последние три объекта (сортировка, группа и проект) - это то, что обрабатывает общий счетчик, а затем предоставляет возможности разбивки на страницы.
db.posts.aggregate([
{ $match: { public: true },
{ $lookup: {
from: 'users',
localField: 'userId',
foreignField: 'userId',
as: 'userInfo'
} },
{ $project: {
postId: 1,
title: 1,
description: 1
updated: 1,
userInfo: {
$let: {
vars: {
firstUser: {
$arrayElemAt: ['$userInfo', 0]
}
},
in: {
username: '$$firstUser.username'
}
}
}
} },
{ $sort: { updated: -1 } },
{ $group: {
_id: null,
postCount: { $sum: 1 },
posts: {
$push: '$$ROOT'
}
} },
{ $project: {
_id: 0,
postCount: 1,
posts: {
$slice: [
'$posts',
currentPage ? (currentPage - 1) * RESULTS_PER_PAGE : 0,
RESULTS_PER_PAGE
]
}
} }
])
Мне пришлось выполнить аналогичную задачу пару месяцев назад, и я обнаружил, что правильный конвейер создает текстуру в Unity, получает собственный указатель в C и, наконец, обновляет его на уровне Java.
Пожалуйста, посмотрите на этот пример проекта, он должен дать вам другую точку зрения.
https://github.com/robsondepaula/unity-android-native-camera
С уважением