Node.js 如何在MondoDB中查询两个字符串?
下面是联系人数组的架构。contacts数组有一个字段hashtag,它是另一个数组。 当用户搜索一个单独的标签——openLove时,我会得到结果。当用户搜索#openLove#婚姻并期望联系人标记为openLove and Marriage时,如何查询Node.js 如何在MondoDB中查询两个字符串?,node.js,mongodb,mongoose,mongodb-query,Node.js,Mongodb,Mongoose,Mongodb Query,下面是联系人数组的架构。contacts数组有一个字段hashtag,它是另一个数组。 当用户搜索一个单独的标签——openLove时,我会得到结果。当用户搜索#openLove#婚姻并期望联系人标记为openLove and Marriage时,如何查询 为什么不保存所有没有“#”的hastag?一种方法是不带#进行存储,并在查找时从用户提供的输入中删除#。这种方法如果您知道查询,它可以使用两种方法,带和不带#,并且您的联系人数组位于任何文档中?是的,我正在保存不带“#”的哈希标记。问题不在于
为什么不保存所有没有“#”的hastag?一种方法是不带#进行存储,并在查找时从用户提供的输入中删除#。这种方法如果您知道查询,它可以使用两种方法,带和不带#,并且您的联系人数组位于任何文档中?是的,我正在保存不带“#”的哈希标记。问题不在于存储实际的“#”。我试图得到两个标签的结果——openLove和Marriage是两个diff联系人的一部分。当用户同时搜索它们时,结果应该是这两个带有哈希标记的联系人。您尝试过$elemMatch吗?您可以在字段hastags.上使用“$in”,并在elemMatch投影上使用。。我想如果你把这两者结合起来,它会对你有所帮助。你为什么不把所有的hastag都保存起来而不加“#”呢?一种方法是不带#进行存储,并在查找时从用户提供的输入中删除#。这种方法如果您知道查询,它可以使用两种方法,带和不带#,并且您的联系人数组位于任何文档中?是的,我正在保存不带“#”的哈希标记。问题不在于存储实际的“#”。我试图得到两个标签的结果——openLove和Marriage是两个diff联系人的一部分。当用户同时搜索它们时,结果应该是这两个带有哈希标记的联系人。您尝试过$elemMatch吗?您可以在字段hastags.上使用“$in”,并在elemMatch投影上使用。。我想如果你把这两者结合起来,会对你有所帮助。
"contacts" : [
{
"addedDate" : ISODate("2015-12-02T09:06:09.891Z"),
"personEmailId" : "tell.fadgfdg@gmail.com",
"_id" : ObjectId("565eb481bf35eeb83d7f9f13"),
"verified" : true,
"favorite" : true,
"linkedinUserName" : null,
"facebookUserName" : null,
"twitterUserName" : "IamlifePaul",
"count" : 2,
"relationshipStrength_updated" : 0,
"contactRelation" : {
"decisionmaker_influencer" : null,
"prospect_customer" : "prospect"
},
"source" : "abc",
"mobileNumber" : "3546789",
"skypeId" : "123",
"designation" : "test",
"companyName" : "Something",
"location" : "Hyderabad, Telangana, India",
"personName" : "Naveen Paul",
"personId" : "565022d7dbeaeb9e17fc7083",
"hashtag" : [
"latestTag",
"anotherTag",
"#hash",
"openLove",
"hellTwo",
"working?",
"hello",
"lol",
"zxc"
],
"lastInteracted" : ISODate("2015-12-08T05:07:53.746Z")
},
{
"addedDate" : ISODate("2015-12-02T09:06:09.891Z"),
"personEmailId" : "naveenpaul.fadgfdg@gmail.com",
"_id" : ObjectId("565eb481bf35eeb83d7f9f13"),
"verified" : true,
"favorite" : true,
"linkedinUserName" : null,
"facebookUserName" : null,
"twitterUserName" : "IamlifePaul",
"count" : 2,
"relationshipStrength_updated" : 0,
"contactRelation" : {
"decisionmaker_influencer" : null,
"prospect_customer" : "prospect"
},
"source" : "abc",
"mobileNumber" : "3546789",
"skypeId" : "123",
"designation" : "test",
"companyName" : "Something",
"location" : "Hyderabad, Telangana, India",
"personName" : "Naveen Paul",
"personId" : "565022d7dbeaeb9e17fc7083",
"hashtag" : [
"latestTag",
"anotherTag",
"#hash",
"marraige",
"hellTwo",
"working?",
"hello",
"lol",
"zxc"
],
"lastInteracted" : ISODate("2015-12-08T05:07:53.746Z")
},
{
"addedDate" : ISODate("2015-12-02T09:06:09.891Z"),
"personEmailId" : "naveenpaul.fadgfdg@gmail.com",
"_id" : ObjectId("565eb481bf35eeb83d7f9f13"),
"verified" : true,
"favorite" : true,
"linkedinUserName" : null,
"facebookUserName" : null,
"twitterUserName" : "IamlifePaul",
"count" : 2,
"relationshipStrength_updated" : 0,
"contactRelation" : {
"decisionmaker_influencer" : null,
"prospect_customer" : "prospect"
},
"source" : "abc",
"mobileNumber" : "3546789",
"skypeId" : "123",
"designation" : "test",
"companyName" : "Something",
"location" : "Hyderabad, Telangana, India",
"personName" : "Naveen Paul",
"personId" : "565022d7dbeaeb9e17fc7083",
"hashtag" : [
"polly",
"tagger",
"#hash",
"working?",
"hello",
"lol",
"zxc"
],
"lastInteracted" : ISODate("2015-12-08T05:07:53.746Z")
}