我有两个文件:
- { p1:"a", p2:"b" }
- { p1:"a", p2:"b", p3:"c" }
我应该如何处理查询:{ p1:"a", p2:"b" } 只查找第一个文档?所以我只想找到我指定的字段的文档。如果文档具有更多字段(比查询),则不应在搜索结果中显示。
我有两个文件:
我应该如何处理查询:{ p1:"a", p2:"b" } 只查找第一个文档?所以我只想找到我指定的字段的文档。如果文档具有更多字段(比查询),则不应在搜索结果中显示。
我必须承认我不知道解决这个问题的正常查询方法。我只知道一种方法,那就是使用 MongoDBs 对象比较。为此,您可以将结构更改为以下内容:
{
ps: [a,b]
}
或者:
{
ps: {p1:a,p2:b}
}
然后你会像这样查询:
db.col.find({ p: [a,b] })
或者:
db.col.find({ p: {p1:a, p2:b} })
但是,这有一个直接的问题。它取决于关键顺序,这意味着如果您的a
和b
实际上在另一个文档中是相反的,它将不匹配。因此,如果您这样做,您需要确保在保存时关心订单。
希望能帮助到你,
使用这种结构并不容易,您需要一些其他可索引的提示来了解要采取和离开的内容。
如果你知道你不想要什么字段,你可以使用 $exists,http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24exists但它不是很有效。
db.col.find({p3:{$exists:false}})
你也可以这样做;
db.col.find({ p1:"a", p2:"b", p3:null }
你能在你自己的代码中扔掉你不想要的字段吗?或者您可以重组为嵌套组以使其更易于过滤吗?
{ basicData:{p1:"a", p2:"b"}, extraData:{p3:"c",p4:"d"} }