Hi thanks for this… but i need to know how to get all the results by sorted
db.chats.aggregate(
{
/**
* query: The query in MQL.
*/
$match: {
"members": {
"$all": [
ObjectId('63ad8631e0d6cfe452b80677'),
ObjectId('63adadf287e482e6f128ec0e'),
]
}
},
},
{
/**
* Provide any number of field/order pairs.
*/
$sort: {
"created_at": -1
}
},
{
/**
* specifications: The fields to
* include or exclude.
*/
$project: {
"_id": 0,
// "members": 1,
"result": {
$sortArray: {input: "$message", sortBy: {created_at: -1}}
}
}
},
)
I have used this… but thing is every things are in result
block and I want it to in one array so I can fetch previous messages with $limit
and $skip
so I can send back to API of user message…
here is my sample data
[
{
"result": [
{
"uuid": "df359053-5b69-4fc3-ac42-57aaf70ec9d9",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00011",
"created_at": {
"$date": "2023-01-10T19:52:26Z"
}
},
{
"uuid": "0cfe04ab-ccf2-4eb9-8760-d3471f033ea6",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00010",
"created_at": {
"$date": "2023-01-10T19:52:15Z"
}
}
]
},
{
"result": [
{
"uuid": "fe54bf97-5dad-4d3f-ada8-ea1f1ab31039",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00010",
"created_at": {
"$date": "2023-01-10T19:52:14Z"
}
},
{
"uuid": "9face81d-b989-4662-a090-2f8f498b1a7b",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00010",
"created_at": {
"$date": "2023-01-10T19:52:12Z"
}
},
{
"uuid": "8578ce16-f3ac-4ceb-b779-0c1f3e8fec2f",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00010",
"created_at": {
"$date": "2023-01-10T19:51:02Z"
}
}
]
},
{
"result": [
{
"uuid": "ef6f12e0-b601-4377-8ff9-28921799985b",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00009",
"created_at": {
"$date": "2023-01-10T19:51:00Z"
}
},
{
"uuid": "6fcbcc3b-ff09-4e1c-9ce5-d73790911592",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00008",
"created_at": {
"$date": "2023-01-10T19:50:47Z"
}
},
{
"uuid": "fdde26cd-6688-466a-be61-37ac8e312a70",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00007",
"created_at": {
"$date": "2023-01-10T19:49:33Z"
}
}
]
},
{
"result": [
{
"uuid": "fdde26cd-6688-466a-be61-37ac8e312a70",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00007",
"created_at": {
"$date": "2023-01-10T19:49:33Z"
}
},
{
"uuid": "fb72bef2-ceff-4e22-80cd-b54da6ba6f01",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00006",
"created_at": {
"$date": "2023-01-10T19:48:51Z"
}
},
{
"uuid": "3ffee1e6-8eb4-4a93-99a2-329576dc7754",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00005",
"created_at": {
"$date": "2023-01-10T19:48:34Z"
}
},
{
"uuid": "927726bd-acc9-461b-98db-9ce07cca5ff0",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00004",
"created_at": {
"$date": "2023-01-10T19:48:31Z"
}
}
]
},
{
"result": [
{
"uuid": "927726bd-acc9-461b-98db-9ce07cca5ff0",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00004",
"created_at": {
"$date": "2023-01-10T19:48:31Z"
}
},
{
"uuid": "664cb8fb-0284-4ad2-af1f-d9458fb09c24",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00003",
"created_at": {
"$date": "2023-01-10T19:48:25Z"
}
},
{
"uuid": "460e8a5a-327f-47c9-a8c3-76772cca4cc7",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00002",
"created_at": {
"$date": "2023-01-10T19:22:03Z"
}
},
{
"uuid": "ed4e5060-45f9-4f4a-a6a0-e45eddbd64bc",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00002",
"created_at": {
"$date": "2023-01-10T19:22:03Z"
}
}
]
},
{
"result": [
{
"uuid": "a45e6738-afb4-47aa-a8f4-fdf1d70eeb5f",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00002",
"created_at": {
"$date": "2023-01-10T19:22:03Z"
}
},
{
"uuid": "466b8569-12c4-4d06-8572-eb5999f0e4ae",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00002",
"created_at": {
"$date": "2023-01-10T19:22:03Z"
}
},
{
"uuid": "314b60eb-1eaf-4a72-a7a6-528ab474a0d9",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00002",
"created_at": {
"$date": "2023-01-10T19:22:03Z"
}
},
{
"uuid": "460e8a5a-327f-47c9-a8c3-76772cca4cc7",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00002",
"created_at": {
"$date": "2023-01-10T19:22:03Z"
}
}
]
},
{
"result": [
{
"uuid": "a45e6738-afb4-47aa-a8f4-fdf1d70eeb5f",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00002",
"created_at": {
"$date": "2023-01-10T19:22:03Z"
}
},
{
"uuid": "4f56f58d-1b0c-48f9-b3b6-c63020068760",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00002",
"created_at": {
"$date": "2023-01-10T19:21:55Z"
}
},
{
"uuid": "4fb86042-93ef-4209-88ca-8c287f16a2f6",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "00001",
"created_at": {
"$date": "2023-01-10T19:20:30Z"
}
},
{
"uuid": "3a6dc43d-bdb5-41b9-be93-15ab389380a9",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "New Docu ",
"created_at": {
"$date": "2023-01-10T18:44:01Z"
}
}
]
},
{
"result": [
{
"uuid": "69b1dd00-8ecf-4ba3-8df4-2cbba3887505",
"sender": {
"$oid": "63adadf287e482e6f128ec0e"
},
"message": "88888888888888888888",
"created_at": {
"$date": "2023-01-10T16:01:22Z"
}
},
{
"uuid": "3ea03321-3c99-48b6-a7fd-2cc5fa514fb3",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "0000000000000",
"created_at": {
"$date": "2023-01-10T15:51:20Z"
}
},
{
"uuid": "c8e35012-1106-4e3f-b678-6040002d54b8",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "pppppp",
"created_at": {
"$date": "2023-01-10T15:40:24Z"
}
}
]
},
{
"result": [
{
"uuid": "b78f1288-5363-4b0f-9bbe-ddf73f60fac1",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "Kio nn sass,,,",
"created_at": {
"$date": "2023-01-10T18:46:39Z"
}
},
{
"uuid": "94e3ae3a-eb2c-4ceb-b580-e97f4ec49aba",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "Kio nn sass,,,",
"created_at": {
"$date": "2023-01-10T18:44:57Z"
}
},
{
"uuid": "80c86174-9836-477b-b0d3-e4cb968b015a",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "Another messgee 2",
"created_at": {
"$date": "2023-01-10T18:44:45Z"
}
},
{
"uuid": "3a6dc43d-bdb5-41b9-be93-15ab389380a9",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "New Docu ",
"created_at": {
"$date": "2023-01-10T18:44:01Z"
}
},
{
"uuid": "69b1dd00-8ecf-4ba3-8df4-2cbba3887505",
"sender": {
"$oid": "63adadf287e482e6f128ec0e"
},
"message": "i am fine thanks",
"created_at": {
"$date": "2023-01-10T16:01:22Z"
}
},
{
"uuid": "3ea03321-3c99-48b6-a7fd-2cc5fa514fb3",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "Buddy hhh.. ",
"created_at": {
"$date": "2023-01-10T15:51:20Z"
}
},
{
"uuid": "c8e35012-1106-4e3f-b678-6040002d54b8",
"sender": {
"$oid": "63ad8631e0d6cfe452b80677"
},
"message": "LOL How are you ",
"created_at": {
"$date": "2023-01-10T15:36:24Z"
}
}
]
}
]
I have made 3 messages collection document after 3 new document is created… i will make it 1000 in production…
and I have use another thing called $concatArray
but its adding only fields which I explicitly give example
// MongoDB Playground
// Use Ctrl+Space inside a snippet or a string literal to trigger completions.
const database = 'test3';
// The current database to use.
use(database);
// db.chats.find({
// "members": {
// "$eq": [
// ObjectId('63ad8631e0d6cfe452b80677'),
// ObjectId('63adadf287e482e6f128ec0e')
// ]
// }
// }
// )
// db.chats.aggregate(
// {
// $match: {
// "members": {
// "$all": [
// ObjectId('63ad8631e0d6cfe452b80677'),
// // ObjectId('63adadf287e482e6f128ec0e'),
// ObjectId('63b3c2b8ce51cf1fca0325ad')
// ]
// },
// }
// },
// {
// $sort: {
// "created_at": -1
// }
// },
// // {
// // $project: {
// // "total": 1,
// // "_id": 0
// // }
// // },
// {
// $limit: 1
// },
// )
// .sort({"created_at": -1})
// db.chats.find(
// {
// "members": {
// "$all": [
// ObjectId('63ad8631e0d6cfe452b80677'),
// ObjectId('63adadf287e482e6f128ec0e'),
// // ObjectId('63b3c2b8ce51cf1fca0325ad')
// ]
// }
// },
// )
// db.chats.find({
// "members": {
// "$eq": [
// ObjectId('63ad8631e0d6cfe452b80677'),
// ObjectId('63adadf287e482e6f128ec0e')
// ]
// }
// }
// )
db.chats.aggregate(
{
/**
* query: The query in MQL.
*/
$match: {
"members": {
"$all": [
ObjectId('63ad8631e0d6cfe452b80677'),
ObjectId('63adadf287e482e6f128ec0e'),
]
}
},
},
{
/**
* Provide any number of field/order pairs.
*/
$sort: {
"created_at": -1
}
},
{
/**
* specifications: The fields to
* include or exclude.
*/
$project: {
"_id": 0,
// "members": 1,
"result": {
$sortArray: {input: "$message", sortBy: {created_at: -1}},
}
}
},
{
/**
* specifications: The fields to
* include or exclude.
*/
$project: {
"messages": {
'$concatArrays': [
"$result", "$result"
]
}
}
}
)
it will add two result
to messages
but not to all of that result
here my demo MongoDB collections [{ "_id": { "$oid": "63bd85a54ffc8dc686c0df5b" }, "message": [ - Pastebin.com