繁体   English   中英

mongodb节点-通过json对象数组查找文档

[英]mongodb node - find documents by array of json objects

我在一个nodejs项目中使用mongodb,其中有一组用户:

{ "_id" : ObjectId("1"), "firstName": "John", "lastName" : "Doe", "age":20 }
{ "_id" : ObjectId("2"), "firstName": "Jane", "lastName" : "Doe", "age":22 }
{ "_id" : ObjectId("3"), "firstName": "Bob", "lastName" : "Smith","age": 32 }
{ "_id" : ObjectId("4"), "firstName": "John", "lastName" : "Smith","age":40}
{ "_id" : ObjectId("5"), "firstName": "John", "lastName" : "Deer","age":66}

我想查询一个返回文档ID的数组,该ID由用户的名字和姓氏匹配,该名字和姓氏由我在此处给出的数组排序

这是我要弄弄的东西:

var usersToFind = [
  { firstName: "John", lastName: "Smith"},
  { firstName: "John", lastName:"Doe"}
];

db.collection('users').then(users => users.aggregate([
   { $match : { /* what to put here? */ } },
   { $addFields : { '__order' : { $indexOfArray : [usersToFind, /* Missing here something */} } },
   { $sort : { '__order' : 1 } }
]).toArray(results => {
  console.log(results);
  // Should print ["ObjectId(4)", "ObjectId(1)"];
});

由于我的有限知识,我可能会缺少有关如何使用mongodb的基本知识。

如果您能帮助我解决查询或向我展示实现此查询的更好方法,将不胜感激。

我总是可以迭代我的usersToFind数组并一个接一个地查找文档,但是我想在这里使用一个查询。 另一种方法是使用$or$and

谢谢

$or查询与投影配合使用将带给您大部分帮助:

db.collection('users').find({$or: usersToFind}).project({_id: 1}).toArray((err, docs) => {
  console.log(docs);
});

但是排序是另一回事,因为MongoDB没有对自定义排序的任何内置支持。 有关更多信息 ,请参见这篇文章

您可以使用find() 这是一个例子:

db.collection('users').find(
   {
     "firstName": "John",
     "lastName": "Doe"
   }
)

这是文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM