javascript 如何找到在任何子对象的key-value中包含特定值的文档mongoose/MongoDB

rqmkfv5c  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(121)

我正在尝试查找是否存在匹配2个过滤器的文档:

  1. licenseType =“试用版”
  2. machineId对象至少包含一个与“ABC”匹配的值
    通常,在JavaScript中,我会做这样的事情:
Object.values(machineId).includes("ABC")

但是我需要在mongoose的findOne()exists()的过滤器选项中放置类似的东西。
我的文档看起来像这样:

{
  licenseType : "Trial",
  machineId : {
    0: null,
    1: "ABC",
    2: "null",
    ...
  },
}

machineId是一个包含可变数量值的对象。
我的查询现在看起来像这样:

const licenses = await License.exists({
      machineId: { $in: ["ABC"] },
      licenseType: "Trial",
    })

但它不起作用。

**如何查找machineId的值是否等于"ABC"?**如果使用javascript或MongoDB提示符完成,是否有不同的方法?我希望能够在我的代码之外重现此查询。

2lpgd968

2lpgd9681#

const licenseExists = await License.exists({
  licenseType: "Trial",
  machineId: { $regex: /ABC/i }
});

我使用的正则表达式是大小写敏感的,它将返回boolean,如果你想让对象返回,你可以使用findOne代替exists。如果这是你要找的,请告诉我。

相关问题