Mongodb 查找查询优化

Mongodb find query optimization

我正在编写 migration script 来更新集合的某些字段,比如 collection2。 在我们的集合中,我们在每个文档中存储具有以下格式的日语日期:

"date" : { "era" : 4, "year" : 25, "month" : 11, "day" : 25 }// i.e `25-11-2014`

现在我正在寻找一种简单的方法来使用 date > 1-10-2014 获取集合中的所有文档,即

 date > { "era" : 4, "year" : 25, "month" : 10, "day" : 1 }

代码运行良好,但我觉得它可以优化但不知道如何。

您可以尝试在 find() 查询中包含实际日期过滤:

db.col1.find(
    { 
        "name": "x123",
        "date.era": 4,
        "date.year": { "$gte": 26 },
        "date.month": { "$gte": 10 },
        "date.day": { "$gte": 1 },
    }
).forEach(function(doc){
    var copyobj = { "$set": {"x1": "1", "x2": "3", ...} };
    db.col2.update({_id: doc._id}, copyobj);
});