mongoose关于数组的查找方法

发布于 2022-09-05 01:56:54 字数 675 浏览 5 评论 0

const arrayA = ["a", "b", "c"], // 假设这个数组的长度未知,所以从数组中一个一个提取出来查找不可行
const stringID = "idABC",

数据库中包含:

{
    "_id" : ObjectId("5943516dbffce41e90cdbdaa"),
    "ID" : "idABC",
    "money" : 1.68,
    "dataArray" : ["d"],
},
{
    "_id" : ObjectId("5943516dbffce41e90cdbdab"),
    "ID" : "oFx8b0",
    "money" : 1.68,
    "dataArray" : ["a"],
}
...

数据库查询条件:

  1. 数据库中ID是stringID

  2. 数据库中dataArray是arrayA中的某个值

  3. 条件1和条件2是或的关系

我的方法是:somethingModel.find({$or: [{location: {$each: userGroupList}}, {openid: openid}]})

结果是错误的写法,请问有没有能实现我说的条件的方法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尘曦 2022-09-12 01:56:54

分开查询,不要混在一起。

somethingModel.find(null, 'dataArray', (err, doc) => {
    doc.map((v) => {
        if (arrayA.includes(v)) {//满足条件2
            //TODO:取出数据,后续操作
        }
    })
});

//满足条件1
somethingModel.find({ID:stringID }, (err, doc) => {
    //TODO:取出数据,后续操作
});

几度春秋 2022-09-12 01:56:54

//抱歉,你问的是or,我刚才写成and了,修改后如下
//还有这糟糕的双端问题

Test.findOne({$or:[{ID:stringID},{dataArray:{$in:arrayA}} ] }).exec(function(err,doc){
        console.log(doc)
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文