2016-03-17 29 views
0

以下操作返回所有从集合products其中qty25更大的文件:如何从MongoDb中选择数据?

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

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

如何从集合中返回所有文档products其中info包含一些标签?

+1

,你能不能给我们每个记录您想要删除的文档的示例? –

+0

已经更新 – Anatoly

+0

我不想删除文件,我想删除标签中的值,标签中的字符串,文档中的字符串,文档中的'products'集合 – Anatoly

回答

1

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

这将在info XML替换<password>asdfghj</password><password></password>为具有在info领域<password>条目(假定密码值没有在它<

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); 
    } 
); 
+0

而不是'qty'我有一个字符串'信息'(以xml格式)。所以你不需要做'find({qty:{$ gt:25}})' – Anatoly

+0

啊好吧,我已经改变了匹配的查找条件[this answer](http://stackoverflow.com/a/36065090/3000179) - 我的混淆 –

+0

您可以请改进您的算法,因为我想替换包含'info'字段中的''条目的每条记录。 (不完全是'密码')? – Anatoly

1

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

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

+0

以及如何删除所有这些值标签? – Anatoly

+0

正如我所提到的,我想'有标签名称包含密码',不完全'密码' – Anatoly