Mongodb 我不知道';我不知道如何在Mongo上的同一语句中使用$eq和$regex

Mongodb 我不知道';我不知道如何在Mongo上的同一语句中使用$eq和$regex,mongodb,Mongodb,我试图使用$eq和$regex在我的mongodb上查找,但我无法让它工作 db.orders.find({“客户代码”:{$eq:“C00001”},{“创建日期”:{$regex:“2019”}) 我的想法是在指定的年份查找一个客户的每个订单。我熟悉sql,但使用nosql。。。如果我使用它,如果我单独使用它,每个语句都会起作用 如果有人能帮我的话。语法错误 db.orders.find( { "customer_cod": { $eq: "C00001" } }, { "cre

我试图使用$eq和$regex在我的mongodb上查找,但我无法让它工作

db.orders.find({“客户代码”:{$eq:“C00001”},{“创建日期”:{$regex:“2019”})

我的想法是在指定的年份查找一个客户的每个订单。我熟悉sql,但使用nosql。。。如果我使用它,如果我单独使用它,每个语句都会起作用

如果有人能帮我的话。

语法错误

db.orders.find(
   { "customer_cod": { $eq: "C00001" } },
   { "creation_date": { $regex: /2019/ } }
)
意味着

如果否,则将日期值正确存储为
date
对象,而不是字符串

如果坚持使用字符串值(尽管这是一个糟糕的设计),请尝试以下方法:

db.collection.find({
   customer_cod: "C00001",
   creation_date: { $regex: /2019/ }
})

注意,
{customer\u cod:“c0001”}
相当于
{customer\u cod:{$eq:“c0001”}

>db.orders.find({“customer\u cod:{$eq:“c0001”},{“创建日期”:{$regex:/2019/});错误:错误:{“确定”:0,“errmsg”:“不支持的投影选项:创建日期:{$regex:/2019/}”,“代码”:2,“代码名”:“BadValue”}
确定,谢谢,我将切换我的设计。我是nosql db的noob,听建议保存日期/时间值总是很好的,因为字符串对于SQL新手来说也是很常见的。在这里,你几乎每天都要面对它——如果你只存储2位数的年份,情况会更糟。
db.collection.find({
   $expr: {
      $and: [
         { customer_cod: "C00001" },
         { $eq: [{ "$year": "$creation_date" }, 2019] }
      ]
   }
})
db.collection.find({
   customer_cod: "C00001",
   creation_date: { $regex: /2019/ }
})