2016-03-17 27 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