如何过滤掉你在 mongodb 中 $slice 的相同键

How to filter out the same keys that you $slice in mongodb

我有一个这样的集合:

[
{_id: "1234", myId: 1, a: [1,2,3], b: [23,3,2], c: [3,234,4], ...},
{_id: "5678", myId: 2, a: [21,32,3], b: [32,123,4], c: [32,32,12], ...},
{_id: "3242", myId: 3, a: [21,23,2], b: [12,2,32], c: [12,213,1], ...}
]

每个文档中都有更多的数组,而且每个数组的大小也更大。我希望能够在我想要的两个键上应用 $slice 投影(以检索 50 个最新值)并且 只有这两个键 return返回,使用 mongo js

我知道如何分别完成这些任务,但我无法找出两者的交集。

所以在 find() 函数中使用 {a: {$slice: -50}, b: {$slice: -50}} 作为投影将 return 我最后的 50 个条目,并且 {a: 1, b: 1} 将 return 我只有这两个键来自find() 结果。

如何同时进行这两项操作?

您可以尝试在投影中添加一个虚拟场:

db.test.find({}, {a: {$slice: -2}, b: {$slice: -2}, dummy: 1, _id: 0})

Returns

/* 0 */
{
    "a" : [ 2, 3 ],
    "b" : [ 3, 2 ]
}

/* 1 */
{
    "a" : [ 32, 3 ],
    "b" : [ 123, 4 ]
}

/* 2 */
{
    "a" : [ 23, 2 ],
    "b" : [ 2, 32 ]
}