繁体   English   中英

Mongo查询以获取逗号分隔值

[英]Mongo query to get comma separated value

我有一个查询,它只向前移动。

例子:

{
  "orderStatus": "SUBMITTED",
  "orderNumber": "785654",
  "orderLine": [
    {
      "lineNumber": "E1000",
      **"trackingnumber": "12345,67890",**
      "lineStatus": "IN-PROGRESS",
      "lineStatusCode": 50
    }
  ],
  "accountNumber": 9076
}
find({'orderLine.trackingNumber' : { $regex: "^12345.*"} })**

当我使用上面的查询时,我得到了整个文档。 但是我也想在搜索67890值时获取文档

在任何时候,我都只会使用单个跟踪号进行查询。 12345 或 67890与 12345 或 67890 一起使用。跟踪编号值有可能扩展其值 12345,56789,01234,56678。

无论 position 中的跟踪号是什么,我都需要提取整个文档。

OUTPUT

应该是整个文档

{ "orderStatus": "SUBMITTED", "orderNumber": "785654", "orderLine": [ { "lineNumber": "E1000", "trackingnumber": "12345,67890", "lineStatus": "IN-PROGRESS" , "lineStatusCode": 50 } ], "accountNumber": 9076 }

我还为 trackingNumber 字段做了索引。 这里需要帮助。 提前致谢。

以下将搜索 12345 或 67890。它类似于 like 条件

find({'orderLine.trackingNumber' : { $regex: /12345/} })
find({'orderLine.trackingNumber' : { $regex: /67890/} })

还有另一种方法可以做到这一点

创建文本索引

db.order.createIndex({'orderLine.trackingnumber':"text"})

您可以使用此索引从 trackingnumber 字段中搜索值

db.order.find({$text:{$search:'12345'}})
--
db.order.find({$text:{$search:'67890'}})
--
//Do take note that you can't search using few in between characters
//like the following query won't give any result..
db.order.find({$text:{$search:'6789'}}) //have purposefully removed 0

要进一步了解$text搜索的工作原理,请通过以下链接拨打 go。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM