【发布时间】:2014-10-22 00:12:16
【问题描述】:
我有一个包含节点列表的文档,我需要返回被多个节点过滤的文档。
例如 我有 2 个文档
doc1 = {nodes: [{name:"node1", state:"1"}, {name:"node2", state:"2"]}
doc2 = {nodes: [{name:"node1", state:"1"}, {name:"node2", state:"1"]}
我希望能够创建一个索引,该索引将根据两个节点的状态选择一个文档:
也就是说,我想做这样的事情:
from doc in docs
from node in doc.nodes
where (node.name == "node1" && node.state == "1")
&& (node.name == "node2" && node.state != "2")
select new { doc }
这不起作用,我还没有找到任何做类似事情的好例子。
抱歉不清楚:
from doc in docs.CorporateInsuranceOffer
from node in doc.offerDetails.nodes
where (node.name == "radgjof" && node.state == "state4" )
&& (node.name == "verdlagning" && node.state != "state4" )
select new {created = doc.offerInfo.created, offerId = doc.offerInfo.offerId, changed = doc.offerInfo.changed, kennitala = doc.offerInfo.kennitala, owner = doc.offerInfo.owner }
这是实际的查询,它不会导致错误,它只是不返回数据(但应该返回 2 个文档——通过一次使用 1 个 where 并比较结果来验证)。
我的问题似乎是我无法在同一个文档中的 2 个不同节点上设置条件。
【问题讨论】:
-
你能发布你正在使用的实际代码和你得到的错误信息吗?您当然可以在索引中使用 Where(..) 子句,例如常见的场景是 where (node.name != null)....
-
但是,正如 Danial 所说,您可能不想只执行“select new { doc }”,您只需指定将在查询中使用的字段。
标签: ravendb