我是 MongoDB 新手。我想将用户数据存储在数组中。数据是单个唯一的文档。可以说文档是这样的。
User { id: number, name: string }
Run Code Online (Sandbox Code Playgroud)
{
_id : 001,
room: User[],
}
Run Code Online (Sandbox Code Playgroud)
我想做一些这样的事情...
room[]如果没有则推送元素(用户) 。upsert就像更新操作中有选项一样。
DB.Collection.updateOne(
{ _id: "001" },
{ $set: { name: "Bar" } },
{ upsert: true }
);
Run Code Online (Sandbox Code Playgroud)
我怎样才能在文档数组中做这样的事情?
您可以使用$set操作来更新嵌入文档$(update)或$[$[<identifier>]。但是它不能很好地工作upsert所以为了插入新文档使用$push。做一些单独更新数据或追加数据的操作。
// push element (User) if room[] doesn't have it.
DB.Collection.updateOne(
{ "room.id": { $ne: "001" } },
{ $push: { "room": { id: "001", name: "Bar" } } },
);
// update User data
DB.Collection.updateOne(
{ "room.id": "001" },
{ $set { "room.$": { id: "001", name: "Foo" } } },
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |