我有一个集合:
[
{_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个最新值)并使用{{返回仅返回那两个键 3}}
我知道如何单独完成任务,但是这两个人的交集我无法弄清楚。
因此,在find()函数中使用{a: {$slice: -50}, b: {$slice: -50}}
作为投影将返回最后50个条目,而{a: 1, b: 1}
将仅返回find()结果中的这两个键。
如何同时进行这两项工作?
答案 0 :(得分:0)
您可以尝试在投影中添加虚拟字段:
{
"javascript.validate.lint.unknownProperty": "ignore"
}
<强>返回强>
db.test.find({}, {a: {$slice: -2}, b: {$slice: -2}, dummy: 1, _id: 0})