如何从MongoDb中选择数据?

时间:2016-03-17 15:27:17

标签: mongodb

以下操作将返回集合productsqty大于25的所有文档:

db.products.find( { qty: { $gt: 25 } } )

而不是qty我有一个字符串info(xml格式)。

如何从products包含某些标记的集合info返回所有文档?

2 个答案:

答案 0 :(得分:1)

使用正则表达式搜索info字符串

db.products.find({info:{$regex: /<password>/}})

答案 1 :(得分:1)

您可以使用简单的forEach loop in Mongo shell,并单独更新每条记录。

对于<password>asdfghj</password>字段中包含info条目的每条记录,这会将<password></password> XML中的<password>替换为info(假设密码值其中没有<

db.getCollection('products').find({info:{$regex: /<.*?password>/i}}).forEach(
    function(document) {
        var info = document.info;
        document.info = info.replace(/<(.*?password)>([^<]+)<\/(.*?password)>/gmi, "<$1></$3>");
        db.products.save(document);
    }
);