在MongoDB中,如何获取费用中包含用户名“quot;X";
我在MongoDB有两个收藏 用户(查找()): 和项目(findOne()): } 我展示了一个findOne()项目集合,但我想知道它如何也是find() 我该如何获得所有任务,其中费用有用户名“vinixhenri”?用户标识符是tasks->responsible在MongoDB中,如何获取费用中包含用户名“quot;X";,mongodb,nosql,Mongodb,Nosql,我在MongoDB有两个收藏 用户(查找()): 和项目(findOne()): } 我展示了一个findOne()项目集合,但我想知道它如何也是find() 我该如何获得所有任务,其中费用有用户名“vinixhenri”?用户标识符是tasks->responsible 我还想知道我在保留用户id方面是否做得对?这是正确的,我必须查阅用户信息,然后重新查询项目信息的数据库?或者我应该在集合中复制有关用户任务的信息吗?在2.2版之前(您将拥有:或者甚至是聚合框架),最合适的方法是: 返回包含一
我还想知道我在保留用户id方面是否做得对?这是正确的,我必须查阅用户信息,然后重新查询项目信息的数据库?或者我应该在集合中复制有关用户任务的信息吗?在2.2版之前(您将拥有:或者甚至是聚合框架),最合适的方法是:
- 返回包含一个或多个任务的所有根文档,并由特定用户在客户端对其进行筛选,以在与该用户相关的项目中仅获取那些可以很好地工作的任务
- 运行一个MR(不推荐),它会每隔一段时间将您的文档重新格式化为您需要的格式
是的,这很好,性能也很好。例如,假设用户更改了用户名,您不想查看所有更改用户名的项目文档,是吗?必须查询一个外部行来检索所有信息更新,这会带来费用,但也会带来好处。在这种情况下,将用户数据复制到项目文档中是不好的。请注意,您不能使用Map/Reduce来就地更新集合。。这将允许一些有趣的递归悲伤:)。不过,您可以合并到现有的输出集合中。请看。@Stennie确实,MR将不得不输出到另一个集合,而忽略了该部分。
{ "_id" : ObjectId("5021314e372c50859ced7063"), "name" : "Vinícius", "username" : "vinixhenri", "password" : "vinix123" }
{ "_id" : ObjectId("50213180372c50859ced7064"), "name" : "André", "username" : "andre", "password" : "andre123" }
{
"_id" : ObjectId("50215d09ddf7410905000000"),
"name" : "Projeto X",
"local" : "/home/server/compartilhamento/htdocs/project_x/",
"permissions" : [
{
"user" : "5021314e372c50859ced7063",
"alter" : true,
"view" : true,
"delete" : true,
"view_task" : true,
"insert_task" : true,
"alter_task" : true,
"delete_task" : true
},
{
"user" : "50213180372c50859ced7064",
"alter" : true,
"view" : true,
"delete" : false,
"view_task" : false,
"insert_task" : false,
"alter_task" : false,
"delete_task" : false
}
],
"tasks" : [
{
"responsible" : "5021314e372c50859ced7063",
"description" : "Ajuste na barra lateral do site"
},
{
"responsible" : "5021314e372c50859ced7063",
"description" : "Ajuste no cabeçalho do site"
},
{
"responsible" : "50213180372c50859ced7064",
"description" : "Ajuste no rodapé do site"
}
]