当前位置: 首页 > 知识库问答 >
问题:

如何编写给mongodb查询的mongoose函数?

沈伟
2023-03-14

这是选择包含user1和user2的room文档的查询。

db.getCollection("rooms").find({
$and:[            
    {users: ObjectId("5e2916615f55cc6e3cb9838b")},    
    {users: ObjectId("5e2b51107d1c624260620e9e")}    
   ]
})

它在mongodb shell中工作得很好,并返回以下文档。

{ 
    "_id" : ObjectId("5e55ae0e07f8bf48dc602d1c"), 
    "users" : [
        ObjectId("5e2916615f55cc6e3cb9838b"), 
        ObjectId("5e2b51107d1c624260620e9e")
    ], 
    "label" : "", 
    "__v" : NumberInt(0)
}
{ 
    "_id" : ObjectId("5e55ae98bec6265a48d453e6"), 
    "users" : [
        ObjectId("5e2916615f55cc6e3cb9838b"), 
        ObjectId("5e2b51107d1c624260620e9e")
    ], 
    "label" : "", 
    "__v" : NumberInt(0)
}
import { Schema, model } from "mongoose";
import mongodb from "mongodb";

const RoomSchema = new Schema({
  users: [
    {
      type: Schema.Types.ObjectId,
      ref: "User",
      required: true,
      autopopulate: { select: "name phone photo" }
    }
  ],
  label: { type: String, text: true }
});

export default model("Room", RoomSchema);
... ... ...
const filter = {
        $and: [
          { users: new mongodb.ObjectID(uid1) },
          { users: new mongodb.ObjectID(uid2) }
        ]
      };
const items = Room.find(filter);
TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'NativeTopology'
    |     property 's' -> object with constructor 'Object'
    |     property 'sessionPool' -> object with constructor 'ServerSessionPool'
    --- property 'topology' closes the circle
    at JSON.stringify (<anonymous>)
    at stringify (F:\work\find-stuff\backend\node_modules\express\lib\response.js:1123:12)
    at ServerResponse.json (F:\work\find-stuff\backend\node_modules\express\lib\response.js:260:14)
    at F:\work\find-stuff\backend\src\controllers\room.controller.ts:75:27
    at Generator.next (<anonymous>)
    at F:\work\find-stuff\backend\src\controllers\room.controller.ts:8:71
    at new Promise (<anonymous>)
    at __awaiter (F:\work\find-stuff\backend\src\controllers\room.controller.ts:4:12)
    at createItem (F:\work\find-stuff\backend\src\controllers\room.controller.ts:59:16)
    at Layer.handle [as handle_request] 

共有1个答案

楚承天
2023-03-14

Model.find是一个异步操作,需要通过使用.then()或传递回调来等待/继续:

const items = await Room.find(filter);
 类似资料:
  • 在使用Mongoose查询数组时,我很难得到我期望看到的内容。一个用户可以有许多与他/她的帐户相关联的房间。room对象存储在集合中附加到用户的数组中。只有一个集合叫做Users。 请考虑以下user和Room的两个架构: 我还应该指出,数据库是填充的,因为我可以看到RoboMongo中的数组(在创建用户帐户时创建了1个元素)。 正在填充从控制台输出到show database的示例数据(包括us

  • 问题内容: 我正在努力编写一个HQL查询以在表中插入新记录。我已经看到了一些插入查询,如下所示,但我不想从下面的代码插入另一个表中的数据。 例如,我有一个表“ User”,其中有三个字段,例如名称,年龄,数字,并且有该用户表的实体。插入查询将是什么? 问题答案: 在HQL中,仅支持INSERT INTO…SELECT…。没有INSERT INTO…VALUES。HQL仅支持从另一个表插入。 因此可

  • 问题内容: 我有此查询,它运行良好 从此查询中,我从我的位置(这是我的第一张表)中选择所有3 KM的餐厅。 但是我需要从3Km中的食品接头中选择AVG等级。 该查询也运行完美: 但是我需要添加这两个查询,通过它们我可以选择所有那些食品接头及其等级AVG。 问题答案: 只需放置子查询,您将得到结果:

  • 我是HQL的新手。请告诉我如何在HQL中编写这个查询。 我的SQL方法是 我的SQL查询是 其中,id和日期是动态的 请在Hql查询中转换此sql查询

  • 问题内容: 我已经流式传输了大约25万条推文并将其保存到MongoDB中,在这里,我正在检索它,如您所见,基于推文中出现的单词或关键字。 我想做的是使用Map- Reduce并基于关键字进行分类,并将其传递给reduce函数以计算每个类别下的tweet数量,有点像您在这里可以看到的。在该示例中,他正在计算页面数,因为它是一个简单的数字。我想做类似的事情: 然后使用reduce函数来获取计数,就像在

  • 问题内容: 谁能帮助我获取下面提到的JPA查询的JPA标准查询。 问题答案: 假设Person与语言有关,这就是您在较早的Hibernate中所做的事情: 我第一次尝试使用JPA 2.0: 请让我知道这是否适合您。 编辑: 更新查询以仅使用一个呼叫。