在不获取其他子文档的情况下检索子文档中数组的第一项
Retrieve the first item of an array in a sub-document without getting other sub-documents
在 MongoDB 中 - 如何只检索数组中位于 属性 中的第一项?
我有一个嵌套文档并使用 $text
查询它(但这没关系,普通查询也不起作用)
我的文档结构:
{
"_id": ObjectId("...."),
"propA": {
"prop1": [
{ ... }, // this is what I want to see
{ ... },
...
],
"prop2": { ... },
"prop3": { ... },
...
},
"propB": {
"prop1": { ... }, // +this, but that's not a problem
"prop2": { ... },
"prop3": { ... },
...
},
"propC": { ... },
...
}
当我运行
collection.find({}, { "propA.prop1": 1, "propB.prop2": 1 });
我在 propA.prop1
得到了完整的数组。当我 运行 而不是
collection.find({}, { "propA.prop1": {$slice: 1}, "propB.prop2": 1 });
我只得到 propA.prop1
的第一项,但我也得到 propA
中的所有其他项目(如 propA.prop2
、propA.prop3
、...)
我想以某种方式组合这两个查询,但不知道如何组合(除了在代码中检索之后)。
您可以通过在投影中包含第二个不存在的 propA
字段来解决此问题:
collection.find({}, {
"propA.prop1": {$slice: 1},
"propA.nonExistentField": 1,
"propB.prop2": 1
});
有点奇怪,但它有效。
在 MongoDB 中 - 如何只检索数组中位于 属性 中的第一项?
我有一个嵌套文档并使用 $text
查询它(但这没关系,普通查询也不起作用)
我的文档结构:
{
"_id": ObjectId("...."),
"propA": {
"prop1": [
{ ... }, // this is what I want to see
{ ... },
...
],
"prop2": { ... },
"prop3": { ... },
...
},
"propB": {
"prop1": { ... }, // +this, but that's not a problem
"prop2": { ... },
"prop3": { ... },
...
},
"propC": { ... },
...
}
当我运行
collection.find({}, { "propA.prop1": 1, "propB.prop2": 1 });
我在 propA.prop1
得到了完整的数组。当我 运行 而不是
collection.find({}, { "propA.prop1": {$slice: 1}, "propB.prop2": 1 });
我只得到 propA.prop1
的第一项,但我也得到 propA
中的所有其他项目(如 propA.prop2
、propA.prop3
、...)
我想以某种方式组合这两个查询,但不知道如何组合(除了在代码中检索之后)。
您可以通过在投影中包含第二个不存在的 propA
字段来解决此问题:
collection.find({}, {
"propA.prop1": {$slice: 1},
"propA.nonExistentField": 1,
"propB.prop2": 1
});
有点奇怪,但它有效。