如何在Node中的MongoDB中从数组中获取具有给定id和给定用户名的项目

问题描述 投票:0回答:1

我有这样的架构,并希望得到给定userName和_id的用户对象:

{
"_id":ObjectId("5cb7267d7ea090083be865c6"),
"name": test,
"users":[
    {
        "userName": "user1",
        "role": "admin"
    },
    {
        "userName": "user2",
        "role": "basic"
    }]
},
{
"_id":ObjectId("5cb7267d7ea090083be865c7"),
"name": test,
"users":[
    {
        "userName": "user3",
        "role": "admin"
    },
    {
        "userName": "user4",
        "role": "basic"
    }]
}

我根据Mongo官方文档尝试了以下查询:

db.users.find( { _id: new ObjectId(5cb7267d7ea090083be865c6) },
             { users: { $elemMatch: { userName: 'user1' } } } )

我正在使用typescript并获取以下错误消息,但不知道如何继续:

 Argument of type '{ users: { $elemMatch: { userName: string; }; }; }' is not assignable to parameter of type 'FindOneOptions'.
 Object literal may only specify known properties, and 'users' does not exist in type 'FindOneOptions'.
node.js mongodb typescript
1个回答
0
投票

我认为你不小心添加了不必要的括号,并将{users: {...}}作为options argument传递。这就是你的代码无法编译的原因。试试这个:

db.users.find( {
 _id: new ObjectId(5cb7267d7ea090083be865c6),
 users: { $elemMatch: { userName: 'user1' } }
});
© www.soinside.com 2019 - 2024. All rights reserved.