【发布时间】:2018-07-06 07:28:51
【问题描述】:
我正在 mongodb 中搜索满足我的搜索条件的查询。我在 db 集合中有一条记录:
{
"_id": ObjectId("5b3d970398e9d099427896c3"),
"role": "New Booking is there by abc",
"date": "07/04/2018",
"idaddress": "213.123.123.213",
"booking": {
"bedroom": 4,
"bathroom": 6,
"customer": "abc",
"email": "abc@gmail.com",
"provider": "provider1",
"address": "brazil",
"appt": "123456",
"phone": "987654321"
}
}
在这条记录中booking 对象有 8 个字段,我使用查询进行搜索:
db.collection_name.find({ "booking.field_name" : {$regex : /data$/}})
要从每个字段(客户、电子邮件、提供商、地址、应用程序、电话)中搜索匹配的值,我必须用字段名称编写同一行,但如果我在预订对象下有 100 个字段,那么我需要用每个字段名称写同一行 100 次。
我正在寻找从每个字段中搜索的查询,为此我尝试了 $text 子句,例如: bson.M{"_id": bson.M{'$type': "objectId" } }
但是 $text 子句只会搜索完整的单词而不是正则表达式(词干)单词示例:- "This is a string" 在这一行我想搜索 "str" 单词,但它不会显示与之匹配的记录。
有人会建议任何例子吗?这将花费我很多时间。
帮我解决这个问题谢谢。
【问题讨论】:
-
您需要管理您的文档结构,以便您没有 500 个字段。此外,您的预订不是一个数组,而是一个对象。
-
lol 很抱歉这个错误@prajvalM 那么我应该采用什么结构才能使其更容易??
-
为什么会有 500 个字段
-
@prajvalm 因为该对象将根据用户所做的更改进行检索,所以我举一个例子,如果用户根据他/她更改了许多字段
标签: mongodb