Ars*_*hya 3 mongodb mongodb-query mongodb-.net-driver
有没有办法将值与mongodb集合中文档中的每个数组和子文档进行匹配,并返回文档
{
"_id" : "2000001956",
"trimline1" : "abc",
"trimline2" : "xyz",
"subtitle" : "www",
"image" : {
"large" : 0,
"small" : 0,
"tiled" : 0,
"cropped" : false
},
"Kytrr" : {
"count" : 0,
"assigned" : 0
}
Run Code Online (Sandbox Code Playgroud)
}
例如,如果在上述文件中我正在搜索xyz或"ab"或"xy"或"z"或"0",则应返回此文件.
我实际上必须使用C#驱动程序在后端实现这一点,但mongo查询也会有很大帮助.
请指教.
谢谢
您可以使用'$ where'来做到这一点
db.mycollection({$where:"JSON.stringify(this).indexOf('xyz')!=-1"})
Run Code Online (Sandbox Code Playgroud)
我正在将整个记录转换为一个大字符串,然后搜索您的元素是否在结果字符串中.如果您的xyz在字段名中,可能无法正常工作!
您可以让它遍历字段以创建一个大字符串,然后搜索它.
这不是最优雅的方式,将涉及完整的表扫描.如果你仔细查看各个字段,它会更快!
虽然上面马尔科姆的答案可行,但当您的收藏量变大或流量很高时,您会很快看到这种情况。这是因为 2 件事。首先,下降到 javascript 是一个大问题,其次,这将始终是全表扫描,因为 $where 不能使用索引。
MongoDB 2.6 引入了默认启用的文本索引(它在 2.4 中处于测试阶段)。有了它,您可以对文档中的所有字段进行全文索引。该文档给出了下面的例子中每个字段和名称索引“TextIndex”创建文本索引。
db.collection.ensureIndex(
{ "$**": "text" },
{ name: "TextIndex" }
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3614 次 |
| 最近记录: |