从MongoDB查找字符串数据

从MongoDB查找字符串数据,mongodb,Mongodb,我有一个集合,其中的值如下: "newsletter": "{\"newsletter_user_list_id\":\"11223344\",\"newsletter_id\":\"11111\",\"newsletter_send_id\":\"24111113909\"}", "useragent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit\/537.71 (KHTML, like Gecko)", 如何编写

我有一个集合,其中的值如下:

"newsletter": "{\"newsletter_user_list_id\":\"11223344\",\"newsletter_id\":\"11111\",\"newsletter_send_id\":\"24111113909\"}",

"useragent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit\/537.71 (KHTML, like Gecko)",

如何编写查询以获取所有具有时事通讯\u用户\u列表\u id“11223344”的记录

您选择了非常奇怪的数据存储方式。看起来您的新闻稿字段中有一个对象,但实际上它是一个字符串。因此,您有两种选择:

  • 使用此应用程序可查找
    时事通讯\u用户\u列表\u id:11223344
    ,并在您的余生中受苦
  • 将其转换为具有适当类型的适当对象(数字应该是数字,而不是字符串),并用于访问子文档
    db.a.find({'newsletter.newsletter\u user\u list\u id':11223344})

p.S.我也可以为您编写正则表达式,我认为我不应该这样做,因为我担心您会坚持这个模式。

为什么要将新闻稿值存储为字符串?您可以将其解析为JSON并将其存储为JSON对象本身。对于嵌套数据结构,您可以使用点表示其级别:db.collection.find({newsletter.newsletter\u user\u list\u id:“112233445”})问题是我正在从另一个源转储数据。所以只需按原样插入即可。如果您也能给出正则表达式,这将非常有用。@AlwinAugustin您真的明白这不是数据库应该如何工作的吗?您应该正确地解析数据,而不是将所有内容都存储为一个巨大的文本块。