Mongodb:查询值比较器的嵌入式文档

Mongodb:查询值比较器的嵌入式文档,mongodb,Mongodb,我有一个包含多个文档的电影集合,这些文档一对多地嵌入了“结果”子文档: { "_id" : 19, "name" : "Star wars", "results" : [ { "type" : "type1", "score" : 44.51211101958831 }, { "type" : "type2", "score" :

我有一个包含多个文档的电影集合,这些文档一对多地嵌入了“结果”子文档:

{
    "_id" : 19,
    "name" : "Star wars",
    "results" : [
        {
            "type" : "type1",
            "score" : 44.51211101958831
        },
        {
            "type" : "type2",
            "score" : 0.6578497966368002
        },
        {
            "type" : "type3",
            "score" : 93.36341655949683
        },
        {
            "type" : "type3",
            "score" : 49.43132782777443
        }
    ]
}
如何删除每部电影的最低type3分数?

您可以使用framework来完成。下面是Node.js上的示例:

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
    if(err) throw err;

    var collection = db.collection('zips');

    collection.aggregate(
        {
            '$unwind':'$results' // expand results array
        },
        {
            '$group':
            {
                '_id':'$_id', // group results by id
                'min':
                {
                    '$min':'$results.score' // and get minimal score 
                }
            }
        },
        function (err, results) {
            if (err) {
                console.log(err);
            }

            console.log(results);
        }
    );   
});
使用$pull运算符循环结果数组以更新集合

collection.update(
    {
        '_id': results[i]._id 
    }, 
    {
        '$pull': { 'results': { 'score': results[i].min }   } 
    },
    function(err, updated) {
        // update callback
    }
)

谢谢Artem,不过我在聚合中添加了$match,以便过滤分数类型。是的,我想念类型,很高兴能提供帮助。