我对mongoose和nodejs相对较新。我试图在nodejs中编写一个快速的服务器端脚本。
我尝试使用mongoose从mongoDb中检索数据作为对象数组。
这是我的架构的样子 -
var heatmapSchema = new Schema({
vuid: String
coordinates: [
{
x: Number,
y: Number,
c: Number,
timestamp: Number
}
]
}, {collection: collectionName} );
正如您所看到的,coordinates
是一个对象数组。我想查询mongoDb,以便得到这些坐标对象的数组,其中c = 1
(c
中的coordinate
属性等于1)即 -
[
{
x: 100,
y: 230,
c: 1,
timestamp: 1233312312
},
{
x: 120,
y: 240,
c: 1,
t: 1233313425
}
......
]
在猫鼬中实现这一目标的最佳途径是什么?
更新
我到目前为止最接近的是使用以下查询 -
heatmapModel.aggregate(
[
{
$unwind: '$coordinates'
},
{
$match: {
'coordinates.c': 1
}
},
{
$project: {
'_id': 0,
'coordinates.x': 1,
'coordinates.y': 1,
'coordinates.c': 1,
'coordinates.timestamp': 1
}
}
],
function (err, result) {
if (err) {
console.log(err);
process.exit(1);
}
console.log(result);
process.exit();
}
);
这给了我以下输出 -
[ { coordinates: { x: 601, y: 165, c: 1, timestamp: 1438840800424 } },
{ coordinates: { x: 484, y: 192, c: 1, timestamp: 1438840801211 } },
{ coordinates: { x: 484, y: 192, c: 1, timestamp: 1438840801388 } },
{ coordinates: { x: 414, y: 394, c: 1, timestamp: 1438840802378 } },
.....
]
如何摆脱json中不需要的coordinates
键?
答案 0 :(得分:1)
heatMap.find({' coordinates.c':1});应该工作。