我有一个包含products以下项目的集合
[
{
name: 'Product 1'
images: ['http://staging.example.com/1', 'http://production.example.com/2'],
...
},
{
name: 'Product 2'
images: ['http://production.example.com/3'],
...
}
]
Run Code Online (Sandbox Code Playgroud)
我想找到数组staging中包含字符串的文档images。
我尝试了一些方法,例如使用 $contains 但 mongo 抛出错误,说我不能将 $contains 与数组一起使用。
如何使用Node.js在MongoDB中进行类似的查询?
这是我的源代码,但它不起作用:
exports.findAll = function(req, res) {
var country=req.params.country;
db.collection('wines', function(err, collection) {
collection.find({ 'country': new RegExp('/'+country+'/i') }).toArray(function(err, items) {
res.jsonp(items);
});
});
};
Run Code Online (Sandbox Code Playgroud) 有没有MongoDB/mongoose'like'语句,比如SQL语言?使用的唯一原因是全文搜索的实现.
我的mongodb中有一个名为"name"的字段.我在spring数据中使用注释来支持查询.我的问题是,有没有办法支持通配符?即如果我有名称为"Robert","Roberto""Ramano"的值,我可以支持允许我将"R"传递给函数的查询,并且它将匹配以R开头的所有内容?现在我必须基本上做一个罗伯特的"精确拼写",或任何一个这样的名字来获得完全匹配.
我知道如何直接使用mongodb进行通配符搜索,但我不确定如何使用spring数据在java中进行.我有一个代表我的学生文档的模型类,我使用注释来描述如何查询.
db.users.find({"name": /.*m.*/})
Run Code Online (Sandbox Code Playgroud)
我不知道如何将其转换为java,因为我想传递一个变量.例如:
伪代码:
String myvar = "R";
db.users.find({/.*<variable here>*/})
Run Code Online (Sandbox Code Playgroud)
以下是我在"MongoRepository"实现中的内容:
public interface UserRepository extends MongoRepository<UserId, String> {
{
@Query("{'name' : {$regex : ?0}}")
public List<Users> findByName(String username);
}
Run Code Online (Sandbox Code Playgroud)
当我传出全名"罗伯特"时,它就能找到"罗伯特".但是,如果我把"R",它没有找到任何东西.
我想在我的数据库中搜索以 FOO 开头或名称中包含 FOO 的客户。为此,我查看了这个问题 ->如何使用“like”查询 MongoDB?
之后,我构建我的查询,使其看起来像这样 - >
Customer.find({'name': '/FOO/'}).exec(function (err, customer) {
console.log(customer);
})
Run Code Online (Sandbox Code Playgroud)
但是虽然里面有一个带有 FOO 的客户,但'name'我没有得到任何结果。如果我修改我的查询...({'name': 'FOO'})...而不是...({'name': '/FOO/'})...我得到我的客户。我究竟做错了什么?
我正在与 MONGO 一起从事我当前的项目,如果我正在搜索一个字母需要搜索每个单词,我需要一个查询
例如:我的数据库中有 3 个主题,如下所示
化学、化学、有机化学
我试过像下面这样的查询
db.topics.find({name: { '$regex': '^che', '$options': 'i' }}, {})
Run Code Online (Sandbox Code Playgroud)
但我只得到化学和化学的结果
但我的要求是,如果我用che搜索,那么这封信需要检查每个单词的第一个字母,结果还带有化学、化学和有机化学(因为在有机化学中,单词以che mistry开头)
我在mongodb中有一个集合(RDBMS中的表),其中包含邮件接收者的名称.
名称可能包含普通英文字符或日文字符或两者的组合.
我RegExp用来查找与我传递的模式匹配的名称,下面是代码
db.user_logs.find({ "recipientName": new RegExp(".*??*", "i") })
Run Code Online (Sandbox Code Playgroud)
这将返回名称中任何位置包含"汉字"的所有记录
但是当我使用的时候
db.user_logs.find({ "recipientName": new RegExp(".*?*", "i") })
它返回所有记录,无论它是否包含"汉".
我的要求是我只需要那些"汉"存在于任何位置的记录
同样的英语角色正在发生.
如何在Java中为Mongo DB编写此查询的等效项:
db.mydata.find({$where: "this.fields.name.toLowerCase().indexOf('ar') > 0"})
Run Code Online (Sandbox Code Playgroud)
?
该查询用于查找包含"AR"(马丁,标记等)的所有名称.
我目前正在使用QueryBuilder,但它不支持这种查询格式.
任何的想法?