【发布时间】:2014-02-10 08:55:19
【问题描述】:
仅显示集合中的选择性列
{
"_id": ObjectId("52f4a5ed07b0f7106a9d5e4c"),
"FM_ID":"1253",
"passwd": ".aDoSkljf_h+6589q76w3rJK",
"Area": {
"0": {
"X": "53543500",
"Y": "14031500",
"images": {
"0": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1a84"),
"ImageType": NumberInt(15)
},
"1": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1a87"),
"ImageType": NumberInt(2)
}
}
},
"1": {
"X": "53543500",
"Y": "14094572",
"images": {
"0": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1aa8"),
"ImageType": NumberInt(15)
},
"1": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1aab"),
"ImageType": NumberInt(2)
}
}
},
"2": {
"X": "53480464",
"Y": "14031500",
"images": {
"0": {
"ImgId": ObjectId("52f4a5a107b0f7106a9d1acc"),
"ImageType": NumberInt(15)
}
}
}
}
}
我只想显示集合中的选择性数据
BasicDBObject 有以下字段
B.append("FM_ID", 1);
B.append("_id", 1);
B.append("Area.$.$.images$.$.ImageType", 1);
我的要求是只显示 FM_ID、_id 和 ImageType
【问题讨论】:
-
请注意,您在多个
Area字段中有多个images。有没有你想得到的或全部的 -
是的,我只需要根据图像类型过滤特定图像。 Area 还集合,每个对象都有这个 X,Y 变量和图像集合 [在图像中有许多图像对象,每个图像对象都有图像 ID 和图像类型] 你能告诉如何设计方案并只过滤匹配的图像类型数据(FM ID,_id,图像类型)
-
好的,很好。我在回答中有点同意,但部分聚合语句也会使事情进入一种状态,当我在 Schema 重新设计中放入时,您可以过滤两个嵌套数组。查看那里的示例文档并阅读链接的帖子。使用 $unwind 语句是可能的,因为字段不再包含静态子文档而是数组。灵活得多。点击 $match 链接并使用示例文档。