Javascript-Mongodb集合的模型查找方法不适用于筛选器条件
我正在开发一个带有环回框架和Mongodb的项目。我还面临一个关于从应用层在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":
{
"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,我刚刚更新了我的答案。我相信这次会成功的。