我想使用Node.js MongoDB驱动程序在给定索引下查找嵌套数组的元素和一个嵌套数组的元素。
以下是数据看起来像的一个例子:
{
"_id": "ObjectId('5d00e4ede5527164b6051797')",
"timestamp": 1560339693539,
"slices": [
{
"image": "/dev/shm/tmpBlecUn/S000008_P1.png",
"data": 123,
"force": 16012
},
{
"image": "/dev/shm/tmpBlecUn/S000009_P1.png",
"data": 345,
"force": 15989
},
{
"image": "/dev/shm/tmpBlecUn/S000010_P1.png",
"data": 567,
"force": 15870
}
]
}
例如,现在,我想获取或更新“切片”数组中特定索引位置的“力”的值。
我似乎找不到正确的查询或方法来执行此操作。我有一个破旧的解决方案来获取正确的元素,但“数据”字段通常包含大量数据,我不想总是获取整个slices数组(> 10mb)。
这是我获取力值的垃圾解决方案:
function get_IdPrintLayerForce(_id, layer, callback) {
MongoClient.connect(conf.dbURL, {useNewUrlParser: true},
function(err, client) {
if (err) log.error(err);
const db = client.db(conf.dbName);
const collection = db.collection('print');
collection.findOne({_id: id}, {projection: {slices: true}},
function(err, res) {
if (err) log.error(err);
client.close();
const force = res['slices'][layer-1];
log.silly('Fetched specific layer force from print: ' + force);
callback(force, err);
});
});
}