我想用SQL查询一些东西,比如查询:
SELECT * FROM users WHERE name LIKE '%m%'
如何在MongoDB中实现这一点?我在文档中找不到这样的操作员。
我想用SQL查询一些东西,比如查询:
SELECT * FROM users WHERE name LIKE '%m%'
如何在MongoDB中实现这一点?我在文档中找不到这样的操作员。
当前回答
Use:
db.customer.find({"customerid": {"$regex": "CU_00000*", "$options": "i"}}).pretty()
当我们搜索字符串模式时,最好使用上面的模式,因为我们不确定大小写。
其他回答
对于PHP mongo Like。
我对PHP mongo有几个问题。我发现串联正则表达式参数在某些情况下会有所帮助——PHP mongo find字段以开头。
例如
db()->users->insert(['name' => 'john']);
db()->users->insert(['name' => 'joe']);
db()->users->insert(['name' => 'jason']);
// starts with
$like_var = 'jo';
$prefix = '/^';
$suffix = '/';
$name = $prefix . $like_var . $suffix;
db()->users->find(['name' => array('$regex'=>new MongoRegex($name))]);
output: (joe, john)
// contains
$like_var = 'j';
$prefix = '/';
$suffix = '/';
$name = $prefix . $like_var . $suffix;
db()->users->find(['name' => array('$regex'=>new MongoRegex($name))]);
output: (joe, john, jason)
In
使用Python的PyMongoMongoose使用Node.jsJongo,使用Javamgo,使用Go
您可以执行以下操作:
db.users.find({'name': {'$regex': 'sometext'}})
FullName类似于“last”,两个日期之间的状态==“结束”:
db.orders.find({
createdAt:{$gt:ISODate("2017-04-25T10:08:16.111Z"),
$lt:ISODate("2017-05-05T10:08:16.111Z")},
status:"Pending",
fullName:/last/}).pretty();
status==“待定”,orderId LIKE“PHA871674”:
db.orders.find({
status:"Pending",
orderId:/PHA876174/
}).pretty();
我找到了一个免费的工具来将MySQL查询转换为MongoDB:http://www.querymongo.com/
我检查了几个问题。在我看来,几乎所有这些都是正确的。据此,答案是
db.users.find({
"name": "%m%"
});
您可以使用where语句构建任何JavaScript脚本:
db.myCollection.find( { $where: "this.name.toLowerCase().indexOf('m') >= 0" } );
参考:$where