mongodb如何使用get.find(….),比如sql的LIKE操作? [复制]

Posted

技术标签:

【中文标题】mongodb如何使用get.find(….),比如sql的LIKE操作? [复制]【英文标题】:Howe to use get.find(….) for mongodb, like a LIKE operation of sql? [duplicate] 【发布时间】:2017-07-25 09:42:14 【问题描述】:

我正在尝试使用 node.js、mongodb、express 和 mongojs 做一个 Rest API。 这是迄今为止有效的代码:

app.get('/personen/:suche',function(req,res)
    var suche = req.params.suche;
    console.log(suche);
    db.personen.find(function (err, docs)
        console.log(docs);
        res.json(docs);
    );

);

现在我拥有数据库中的所有人员。

变量“suche”是一个 3 个字符的字符串。现在我只想询问女巫中的名字这个字符串是名字的一部分 例如这样的=“最大” 输出 max, Maximillian, maxi 以及其他信息给这个人。

就像 sql 中的 LIKE 操作一样,但我错过了 Select 部分,因为我可以说出我想要的。 在网络上做了一些研究后,我认为应该是这个方向的东西,但是它不起作用。

app.get('/personen/:suche',function(req,res)
    var suche = req.params.suche;
    console.log(suche);
    db.personen.find(name: /suche/,function (err, docs)
        console.log(docs);
        res.json(docs);
    );

);

我不确定错误是否真的出在 find 函数中,或者我错过了一个演员表。 我没有收到错误消息,而是收到一个空文档。

在此先感谢您的每一个想法,对于糟糕的英语感到抱歉。

PS:如果有帮助,数据库内容

> db.personen.find().pretty()

        "_id" : ObjectId("58b9e43fd90231e4c9bb0b61"),
        "vorname" : "max",
        "nachname" : "muster",
        "nr" : "1111"


        "_id" : ObjectId("58b9e43fd90231e4c9bb0b62"),
        "vorname" : "hans",
        "nachname" : "müller",
        "nr" : "2222"


        "_id" : ObjectId("58b9e43fd90231e4c9bb0b63"),
        "vorname" : "friz",
        "nachname" : "meier",
        "nr" : "3333"


        "_id" : ObjectId("58b9e43fd90231e4c9bb0b64"),
        "vorname" : "christoph",
        "nachname" : "hugetobler",
        "nr" : "4444"


        "_id" : ObjectId("58b9e43fd90231e4c9bb0b65"),
        "vorname" : "helmut",
        "nachname" : "boss",
        "nr" : "5555"


        "_id" : ObjectId("58b9e43fd90231e4c9bb0b66"),
        "vorname" : "kevin",
        "nachname" : "küffer",
        "nr" : "6666"


        "_id" : ObjectId("58b9e43fd90231e4c9bb0b67"),
        "vorname" : "maximilian",
        "nachname" : "murer",
        "nr" : "7777"


        "_id" : ObjectId("58b9e43fd90231e4c9bb0b68"),
        "vorname" : "maxi",
        "nachname" : "mayer",
        "nr" : "8888"

【问题讨论】:

***.com/questions/3305561/… Karl,请参阅链接副本中的 this answer,因为 suche 是一个变量。您当前的尝试是搜索字符串 'suche' 本身。 我也有同样的问题...你找到答案了吗? 【参考方案1】:

这个mysql-instr-like-operation-in-mongodb的副本

您的查询会是这样的:

db.personen.find(name: /suche/)

【讨论】:

感谢您的回答并抱歉重复,但我尝试过这样但它不起作用。我的文档总是空的。所以,我想我可能问错了问题,或者找错了地方。

以上是关于mongodb如何使用get.find(….),比如sql的LIKE操作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 3.x ORM get()、find() 以及如何禁用befeoreFind()?

mongodb为啥比mysql快

Mongodb聚合框架比map/reduce更快吗?

我可以创建 Get.find<>() 的单个实例吗?

如何将 MongoDB 作为 Windows 服务运行?

mongodb分组统计比mysql还慢