是否可以在mongodb中进行功能查找时更新文档?

时间:2015-07-30 18:35:53

标签: mongodb

我希望找到一个条件简单的文档,但会根据不同的条件和情况对其进行更新。

这是我写的,但我不知道如何在var rx_CondoIndicator = /\bCONDO(MINIUM)?(?!S)/; var rx_TownhouseIndicator = /\bTOWN\s*(HOUSE|HOME)(?!S)/; var rx_TimeshareIndicator = /\bTIMESHARE(?!S)/; this上应用更改。

这可能吗?

obj

2 个答案:

答案 0 :(得分:1)

你有没有尝试过" findAndModify"关于集合的方法?

db.devices.findAndModify({
    query: {unique_id:"test"},
    update: {installed_apps: [{app_id:ObjectId("555390cb8af1031b237e2b32")}]},
    upsert: true
});

db.devices.update({
    {unique_id:"test"},
    { $push: { installed_apps: {<KEY>:<VAL>}}},
    {
        upsert: true,
        multi: true
    }
});

答案 1 :(得分:0)

你的意思是这样吗?

> db.foo.insert({"a": 1, "b": 2})
> db.foo.insert({"a": 1, "b": 0})
> db.foo.insert({"a": 0, "b": 1})

> db.foo.find().map(function(doc) {
    if (doc.a  == 1 & doc.b == 2) {
        doc.a = 3;
        db.foo.save(doc);
        return(true);
    } else {
        return(false);
    }
})
[ true, false ]
> db.foo.find({}, {_id: 0})
{ "a" : 3, "b" : 2 }
{ "a" : 1, "b" : 0 }
{ "a" : 0, "b" : 1 }

此方法的一个问题是find不支持$isolate,因此您必须手动处理多次读取。