Javascript-Mongodb集合的模型查找方法不适用于筛选器条件

Javascript-Mongodb集合的模型查找方法不适用于筛选器条件,javascript,mongodb,mongoose,loopback,Javascript,Mongodb,Mongoose,Loopback,我正在开发一个带有环回框架和Mongodb的项目。我还面临一个关于从应用层在Mongodb集合中查找文档的问题。它不适用于过滤条件。我总是收集所有的文件 这是我的模型模式 { "name": "MyModel", "plural": "mymodel", "base": "PersistedModel", "idInjection": true, "options": { "validateUpsert": true }, "properties":

我正在开发一个带有环回框架和Mongodb的项目。我还面临一个关于从应用层在Mongodb集合中查找文档的问题。它不适用于过滤条件。我总是收集所有的文件

这是我的模型模式

    {
  "name": "MyModel",
  "plural": "mymodel",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "title": {
      "type": "string",
      "required": true
    },
    "description": {
      "type": "string",
      "required": true
    },
    "guide_to_make": {
      "type": "string",
      "required": true
    },
    "media": {
      "type": "object",
      "required": true
    },
    "price": {
      "type": "number",
      "required": true,
      "default": 0
    },
    "discount": {
      "type": "number",
      "default": 0
    },
    "status": {
      "type": "number",
      "required": true,
      "default": 1
    },
    "user_provider": {
      "type": "string",
      "required": true
    },
    "create_at": {
      "type": "date",
      "required": true,
      "defaultFn": "now"
    },
    "last_update": {
      "type": "date",
      "required": true,
      "defaultFn": "now"
    }
  },
  "validations": [],
  "relations": {},
  "acls": [
    {
      "accessType": "WRITE",
      "principalType": "ROLE",
      "principalId": "$unauthenticated",
      "permission": "DENY"
    }
  ],
  "methods": {}
}
下面是我使用filter进行查询以查找与筛选条件匹配的项的一些方法:

MyModel.find({user_provide:'5ae9e8400e59ae0ecc5ed614'},(err,items)=>{console.log(JSON.stringify(items))});

MyModel.find({user_provide:{'like':'5ae9e8400e59ae0ecc5ed614'}},(err,items)=>{console.log(JSON.stringify(items))});
或者我尝试直接使用mongo连接,如下所示:

var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/";

    MongoClient.connect(url, function (err, db) {
        if (err) throw err;
        var dbo = db.db("asiodb");
        dbo.collection("Mymodel").find({}, { user_provider: '5ae9e8400e59ae0ecc5ed614' }).toArray(function (err, result) {
            if (err) throw err;
            console.log(result);
            db.close();
        });
    });
但我用各种方法收集所有的文件。我已经用mongo查询命令在Robo3T中测试了过滤条件

db.getCollection('Mymodel').find({user_provider:'5ae9e8400e59ae0ecc5ed614'})
在机器人3T中,它也与mongo指挥部合作。它可以找到符合条件的项目 我不知道为什么我的服务器层没有JS代码

有人请告诉我什么是错误的JS代码或正确的语法使用mongo查找方法


非常感谢

更新:

使用node mongodb驱动程序,您应该在find函数的第一个参数中使用过滤器,而不是在第二个参数中使用过滤器,就像您在代码中所做的那样

应该是这样的:

var MongoClient = require('mongodb').MongoClient;
var ObjectID = require('mongodb').ObjectID;
var url = "mongodb://localhost:27017/asiodb";

MongoClient.connect(url, function(err, db) {
    if (err) throw err;

    db.collection('Mymodel').find({ user_provider : '5ae9e8400e59ae0ecc5ed614' }, {}).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });
});

您的密钥名不正确
用户\u提供
。。。应该是
user\u provider
对不起,将代码复制到stackoverflow是我的错误。但在我的程序中,它是user_provider,非常感谢您的回复,Tomas先生user_provider是id字段,但在另一个集合中,在这个集合中,这个字段只是字符串。我用ObjectID('5ae9e8400e59ae0ecc5ed614')进行了测试。我得到了同样的结果,它得到了这个集合中的所有文档,而不使用过滤器conditions@AcidBurn,我刚刚更新了我的答案。我相信这次会成功的。