我在一个名为orders的数据库集合中插入了一些数据。我有一个名为numberofh
的字段。
但我的集合中的所有字段都是字符串类型。我连接到服务器上的mongo db shell,我想删除numberofh
小于5的所有订单。db.orders.remove({numberofh:{$lt:20}})
不起作用,因为numberofh
是一个字符串,所以$lt
不起作用。
我能用别的方法吗,比如sdb.orders.remove({parseInt(numberofh}:{$lt:20})
?
最佳答案
在MongoDB中不能将字符串与数字进行比较。必须首先插入一个新字段,即numberofh
的数值表示。你必须在客户端进行转换。不可能创建一个依赖于另一个字段值的字段。
db.orders.find( {} ).forEach( function (x) {
x.numberofh_n = parseInt( x.numberofh, 10 );
db.orders.save( x );
});
之后,您可以通过新字段删除记录:
db.orders.remove( { numberofh_n: { $lt:20 } } )
关于mongodb - 如何更改mongodb集合中的字段类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21909121/