我在一个名为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/

10-11 14:15